你能做到這一點真的很容易使用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