Excel编程(特定单元格在两工作表之间定向转移)

来源:百度知道 编辑:UC知道 时间:2024/05/26 00:25:43
某Excel文件中有两个工作表,表一和表二。
表一有两列数据,500行。其中A列为自然数1—500,升序排列;B列中每个单元格内容均为为一个在[1,100]上随机产生的自然数;
表二现仅有一列数据,100行。内容为自然数1—100,升序排列。

编程要求:
将工作表一中的A列单元格的内容从上至下依次剪切到工作表二中,规则(举例说明)如下:
第1步,如果工作表一的单元格B1的内容为15,则将工作表一的单元格A1剪切并粘贴到工作表二的单元格B15上;
第2步,如果工作表一的单元格B2的内容为79,则将工作表一的单元格A2剪切并粘贴到工作表二的单元格B79上;
第3步,如果工作表一的单元格B3的内容再次为15,则将工作表一的单元格A3剪切并粘贴到工作表二的单元格C15上;
……
以此类推,直到剪切粘贴完工作表一中A列的所有单元格至工作表二中。

实际数据量较大,手工操作很麻烦,希望编程高手多多赐教!谢谢!
由于本人不懂程序,现对回答者造成的不便表示歉意,实际问题应该修正为:
某Excel文件中有两个工作表,表一和表二。
表一有两列数据,500行。其中A列为自然数1—500,升序排列;B列中每个单元格内容均为为一个在[0,99]上随机产生的整数;
表二现仅有一列数据,100行。内容为整数0—99,升序排列。

编程要求仍然不变。谢谢!

例如你的工作表一是sheet1,工作表2是sheet2.

按alt + F11 + I + M,插入一个VBA模块.

在右边代码编辑器里复制如下代码

Sub m()
For i = 1 To 500
trow = Sheet1.Range("b" & i)
If trow = "" Then trow = 0
tcolumn = Application.WorksheetFunction.CountA(Sheet2.Range("a" & trow + 1).EntireRow) + 1
Sheet2.Cells(trow + 1, tcolumn) = Sheet1.Range("a" & i)
Next i
End Sub

按F5运行一下mv这个宏

子易空间站 - 高效办公指导网站

把例子文件发给我邮箱,且说明用途,应该不难解决

你是否只想利用一下表一的资源到表二,不用理解得太深了,让人无法帮助你。

Private Sub xx()
For i = 1 To 500
j = Application.WorksheetFunction.CountA(Sheet2.Rows(Cells(i, 2))) + 1
Sheets(2).Cells(Cells(i, 2), j) = i
Next
End Sub

Sub t()
Dim R(1 To 100) As Integer
For i = 1 To 500
K = Cells(i, 2)
R(K) = R(K) + 1
Sheet1.Cells(K, R(K) + 1) = i '如果工作表1的A列不是数字的话就把i换成cells(i,1)
Next
End Sub
假定工作表2是Sheet1,利用数组R存储工作表2对应行的列的位置,每次给工作表2