你可以試試這個..
假設你的第二個工作簿的名稱是Book2.xlsx,那就試試這個...
在第一個工作簿 在C2
=IF(ISNUMBER(MATCH(B2,'[Book2.xlsx]Data'!$D:$D,0)),"OK","")
和把它複製下來。
如果您需要VBA解決方案,一種獲得所需輸出的方法如下... 以下代碼假定Book1.xlsm(將包含下面的代碼)和Book2.xlsx都保存在相同的文件夾。 如果它們保存在不同的位置,請在以下代碼行中更改Book2.xlsx的路徑和名稱。
sourceFilePath = dwb.Path & "\"
sourceFileName = "Book2.xlsx"
代碼:
Sub CompareData()
Dim swb As Workbook, dwb As Workbook
Dim sws As Worksheet, dws As Worksheet
Dim slr As Long, dlr As Long, i As Long
Dim sourceFilePath As String, sourceFileName As String
Dim x, y, z, dict
Application.ScreenUpdating = False
Set dwb = ThisWorkbook
Set dws = dwb.Sheets("Items")
dlr = dws.Cells(Rows.Count, 2).End(xlUp).Row
x = dws.Range("B2:B" & dlr).Value
ReDim z(1 To dlr)
sourceFilePath = dwb.Path & "\"
sourceFileName = "Book2.xlsx"
Workbooks.Open sourceFilePath & sourceFileName
Set swb = ActiveWorkbook
Set sws = swb.Sheets("Data")
slr = sws.Cells(Rows.Count, 4).End(xlUp).Row
y = sws.Range("D2:D" & slr).Value
Set dict = CreateObject("Scripting.Dictionary")
For i = 1 To UBound(y, 1)
dict.Item(y(i, 1)) = ""
Next i
swb.Close False
For i = 1 To UBound(x, 1)
If dict.exists(x(i, 1)) Then
z(i) = "OK"
Else
z(i) = ""
End If
Next i
dws.Range("C2").Resize(UBound(x, 1), 1).Value = Application.Transpose(z)
Application.ScreenUpdating = True
End Sub
嗨,我明白這一點,但我需要做的是在VBA代碼不擅長因此爲什麼我掙扎。 –
到目前爲止,您是否有開始代碼或分享您嘗試過的任何內容?如果是的話,你有什麼問題呢? – sktneer
我已經在我的解決方案中添加了一個代碼,看看你是否試圖實現。 – sktneer