【发布时间】:2020-11-19 17:27:17
【问题描述】:
我有两张数据表,我想根据特定标准将数据从表 2 复制到表 1。我有几个地区,我只想将“非洲”地区的数据复制到第一张表中。我使用的代码如下:
Sub CopyPaste()
Dim wb As Workbook
Dim workbookname As String
Dim wsDest As Worksheet
Dim wsSrc As Worksheet
Dim rng1, rng2 As Range
workbookname = ActiveWorkbook.Name
Workbooks(workbookname).Sheets("Sheet2").Activate
Set wsSrc = Workbooks(workbookname).Sheets("Sheet2")
Workbooks(workbookname).Sheets("Sheet1").Activate
' Destination worksheet: Master Sheet
Set wsDest = Workbooks(workbookname).Sheets("Sheet1")
ar = Array("Region", "Project Number", "Project Long Name", "PM", "KOB")
arr = Array("Region", "Project No.", "Project Long Name", "Project Manager", "KOB")
For i = 3 To wsSrc.Range("A" & Rows.count).End(xlUp).Row
If wsSrc.Range("O" & i) = "Africa" Then
For j = 5 To 5000
wsSrc.Range(ar(j) & i).Copy wsDest.Range(arr(j) & Rows.count).End(xlUp)(3)
Next j
End If
Next i
End Sub
此代码运行,但没有给我任何输出。我不确定要进行哪些更正才能获得正确的输出。对此的任何帮助将不胜感激。
【问题讨论】:
-
所以这里有一个想法给你。如果说
j = 10,那么您期望ar(j)或arr(j)返回什么,因为您的数组中只有5 个值? -
我希望输出是要从工作表 2 复制到工作表 1 的列标题下的数据。数组中的值是我的列标题
-
这是我从堆栈中获得的代码,我尝试根据需要进行修改,但我认为我有一些错误
-
这段代码有很多问题,这就是它不起作用的原因,最大的是数组。您在数组中有 5 个项目,但您的 j 循环从 5 开始,因此它找不到要抓取的值。但即使解决了还有其他需要更改的问题。
-
两张表中的标题是否完全相同?如果是这样,请告诉我两张纸各自在哪一列。 EG是A到E还是A、B、C、G、H等?它们是什么?