0

所以我得到了两本工作簿。第一个包含源信息。第二个包含应使用来自源信息的信息完成的产品列表。

所以我认为这可以用VBA来完成。这是我的想法:

从 B 列中选择条件值。在源工作表中搜索条件 选择匹配条件所在的行(例如第 4 行) 在匹配行中选择 Q 列和 W 列的单元格并将这些值复制回标准所在行中产品工作簿的单元格 E 和 F。

这有可能在VBA中实现吗?你有什么建议可以帮助我吗?先感谢您!

4

1 回答 1

1

如果两个工作簿中的标准单元格完全相同,我建议使用源工作表的标准创建一个数组,然后遍历产品工作表以在数组中添加您需要的 2 列。您只需要再次遍历源工作表并用相关数据替换目标单元格。如果排序顺序不重要,或者可以重置,我建议对您的条件列进行排序以使用单个 For... Next 循环进行优化。

如果您的标准单元格不完全相同,是否有可以重复使用的模式?

一个简单的代码示例如下:

Sub CopyData()
Dim myData(200, 3) As Variant
Dim i As Integer
Dim iArrayLimit As Integer
Dim myLastRow As Integer

Application.Workbooks(Source).Activate
myLastRow = ActiveCell.SpecialCells(xlCellTypeLastCell).Row
iArrayLimit = myLastRow
For i = 1 To myLastRow 'Provided your source sheet has no header. Replace by 2 if it does!
 myData(i, 1) = Cells(i, 2) 'Column B, right
Next

Application.Workbooks(Products).Activate
myLastRow = ActiveCell.SpecialCells(xlCellTypeLastCell).Row
For i = 1 To iArrayLimit 'Take care: if you have headers here and not in the source, change the code below
 For j = 1 To myLastRow
  If Cells(j, 1) = myData(i, 1) Then 'If your criteria in the products sheet is in column A!
   myData(i, 2) = Cells(j, 17)
   myData(i, 3) = Cells(j, 23)
   Exit For
  End If
 Next
Next

Applications.Workbooks(Source).Activate
For i = 1 to iArrayLimit
 Cells(i, 5) = myData(i, 2)
 Cells(i, 6) = myData(i, 3)
Next

End Sub
于 2013-08-01T15:30:48.430 回答