我只需要对此代码提供一些帮助。我只是拥有它但不完全。
我需要在2个不同的工作簿中匹配2个不同的列。我需要将工作簿datafeed.xlsx上的列b(sku)与列b(sku)上的工作簿result.xlsx相匹配,如代码所示。 如果result.xlsx与workgroup datafeed.xlsx不匹配,那么我需要在列/行ab2中放置一个数字0,它从b2偏移到第26列。
我知道在查找表中我可以使用ISNA,但我甚至无法使用它。我尝试了不同的东西,但没有运气。我肯定做错了,因为它不起作用,我们将不胜感激。
这是我的代码:
Set w3 = Workbooks("datafeed.xlsx").Sheets("datafeed") Set w4 = Workbooks("result.xlsx").Sheets("Sheet 1")
For Each z In w3.Range("b2", w3.Range("b" & Rows.Count).End(xlUp))
XR = 0
On Error Resume Next
XR = Application.Match(z, w4.Columns("b"), 0)
On Error GoTo 0
If XR <> 0 Then w4.Range("AB2" & XR).Value = z.Offset(, 11)
Next z
感谢
答案 0 :(得分:0)
如果我理解正确,您可以在目标工作表的B列中查找源表的B列中的值。如果目标工作表包含值(/ not),则需要将1/0写入AB列。
下面的代码将两列读入数组,并通过它们比较两者。找到相同长度的结果数组,并在找到/找不到项目时向其写入1/0。最后,数组被粘贴到AB列
Sub test()
Dim wbSource As Workbook, wbTarget As Workbook
Dim wsSource As Worksheet, wsTarget As Worksheet
Dim compare1 As Variant, compare2 As Variant, result As Variant
Set wbSource = Workbooks("datafeed.xlsx")
Set wbTarget = Workbooks("result.xlsx")
Set wsSource = wbSource.Sheets("datafeed")
Set wsTarget = wbTarget.Sheets("Sheet 1")
compare1 = wsSource.Range("B2", wsSource.Range("B" & Rows.Count).End(xlUp))
compare2 = wsTarget.Range("B2", wsTarget.Range("B" & Rows.Count).End(xlUp))
ReDim result(LBound(compare1), UBound(compare1))
For i = LBound(compare1) To UBound(compare1)
found = False
For j = LBound(compare2) To UBound(compare2)
If compare1(i) = compare2(j) Then
result(i) = 1
found = True
Exit For
End If
Next j
If found = False Then
result(i) = 0
End If
Next i
wsSource.Range(Cells(2, 28), Cells(UBound(result) + 1, 28)) = Results
End Sub