例如我有A.xlsx,B.xlsx两个文件
假如A.xlsx的B2单元格是"yes",就把他复制到B.xlsx的B21单元格
往下B3,4,....一直到有数据的最后一个
一直复制到B22,23...一直到最后一个
想问如何 在一个新的excel文件上做一个工具调用这两个表呢
谢谢!
求vba一个文件数据复制到另一个文件
答案:2 悬赏:0 手机版
解决时间 2021-03-04 10:38
- 提问者网友:我一贱你就笑
- 2021-03-04 07:42
最佳答案
- 五星知识达人网友:夜余生
- 2021-03-04 08:06
Sub TestMoveData()
Dim wsh1 As Worksheet
Dim wsh2 As Worksheet
Set wsh1 = Application.Workbooks("A.xlsx").Sheets("Sheet1")
Set wsh2 = Application.Workbooks("B.xlsx").Sheets("Sheet1")
Dim aLast As Long
aLast = wsh1.Range("B:B").Find("*", , , , , xlPrevious).Row
Dim arr1()
arr1 = wsh1.Range("B2").Resize(aLast - 2 + 1, 1)
Dim arr2()
arr2 = arr1
Dim x As Long
Dim y As Long
y = 1
For x = 1 To UBound(arr1, 1)
If arr1(x, 1) = "yes" Then
arr2(y, 1) = arr1(x, 1)
y = y + 1
End If
Next
arr2 = Application.WorksheetFunction.Transpose(arr2)
ReDim Preserve arr2(1 To y - 1)
arr2 = Application.WorksheetFunction.Transpose(arr2)
wsh2.Range("B21").Resize(y - 1, 1) = arr2
End Sub
Dim wsh1 As Worksheet
Dim wsh2 As Worksheet
Set wsh1 = Application.Workbooks("A.xlsx").Sheets("Sheet1")
Set wsh2 = Application.Workbooks("B.xlsx").Sheets("Sheet1")
Dim aLast As Long
aLast = wsh1.Range("B:B").Find("*", , , , , xlPrevious).Row
Dim arr1()
arr1 = wsh1.Range("B2").Resize(aLast - 2 + 1, 1)
Dim arr2()
arr2 = arr1
Dim x As Long
Dim y As Long
y = 1
For x = 1 To UBound(arr1, 1)
If arr1(x, 1) = "yes" Then
arr2(y, 1) = arr1(x, 1)
y = y + 1
End If
Next
arr2 = Application.WorksheetFunction.Transpose(arr2)
ReDim Preserve arr2(1 To y - 1)
arr2 = Application.WorksheetFunction.Transpose(arr2)
wsh2.Range("B21").Resize(y - 1, 1) = arr2
End Sub
全部回答
- 1楼网友:等灯
- 2021-03-04 08:23
range("cells(1,1):cells(num,8)")不对
应该是
range(cells(1,1),cells(num,8))
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯