あなたはC2
=IF(ISNUMBER(MATCH(B2,'[Book2.xlsx]Data'!$D:$D,0)),"OK","")
でまずワークブック で
...これを試してみてください、あなたの2番目のブックの名前を仮定し
がBook2.xlsx ..ですこれを試してみてくださいすることができ、それをコピーしてください。
VBAソリューションが必要な場合は、目的の出力を得るための1つの方法は以下のとおりです。 次のコードは、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