你能做到这一点真的很容易使用VLOOKUP:
=IF(ISERROR(VLOOKUP(C1,Sheet2!A:A,1,FALSE)),"Not Available","Available")
但既然你问了VBA,这里是一个将做到这一点,利用效率和速度的字典对象和变量数组功能。
- 转储列C和列A分成变量数组
- 使列A的字典值
- 搜索通过柱C的条目,看他们是否在甲
- 存在的变量i是行数一样,所以这是相当简单的文本放置在列D.
Sub TestAvailability()
Application.ScreenUpdating = False
Dim varrayC As Variant, varrayA As Variant
Dim lastRow As Long
Dim dict As Object
Set dict = CreateObject("scripting.dictionary")
lastRow = Sheets(2).range("A" & Rows.count).End(xlUp).Row
varrayA = Sheets(2).range("A1:A" & lastRow).Value
lastRow = Sheets(1).range("C" & Rows.count).End(xlUp).Row
varrayC = Sheets(1).range("C1:C" & lastRow).Value
On Error Resume Next
For i = 1 To UBound(varrayA, 1)
dict.Add varrayA(i, 1), 1
Next
For i = 1 To UBound(varrayC, 1)
If dict.exists(varrayC(i, 1)) = True Then
Sheets(1).cells(i, 4).Value = "Available"
Else
Sheets(1).cells(i, 4).Value = "Not Available"
End If
Next
Application.ScreenUpdating = True
End Sub
从技术上讲,您可以创建一个新的可用性阵列并将其转置到D列,但我不想让它过于复杂。
嘿,我刚刚回答了你的问题,然后我怀疑你的问题是以错误的方式写的:事实上你没有拆分行,所以我认为它是一个单一的字符串。太糟糕了:( – Marco
不,这是多个字,我想分割确切的单词,然后比较。A列(第1张) - > 009-AB-001-XL。 – user899902