各位IT大:
我有個問題想請教
我想用VBA簡單做一個儲存格填值
SheetA:
SheetB:
我要再SheetB裡面自動比對特定欄位然後帶入值
但SheetA的Row2有缺值或不Match要搜尋的值
會出現下圖: (前面1個, 2個, 3個都有帶出值 1,2,3 但到用SheetB的4個搜尋SheetA找不到值就會出現)
程式碼如下:
Sub IndexMatch()
Dim i As Integer
' Perform index match
For i = 2 To 11
If Cells(1, i) = "" Then
Else
Cells(2, i).Value = WorksheetFunction.Index(Worksheets("SheetA").Rows(1), WorksheetFunction.Match(Cells(1, i).Value, Worksheets("SheetA").Rows(2), 0))
End If
Next i
End Sub
以下思路供參考~
搭配在你If的改寫,應該可以解決你的問題
1.改使用Application.match()
用法一樣,但是match不到時會回傳錯誤碼,不會直接報錯
2.使用WorksheetFunction.countifs()判定範圍內有沒有要找的值,再使用match
感謝,不過這裡都要把WorksheetFunction(index, match)改為Application,不然index那還是會有型態不符合的異常。另外想請問WorksheetFunction跟Application有什麼差異嗎?
index會異常應該也是因為match錯誤的關係
可以在外層先判定match有沒有錯誤:
if not IsError(Application.Match(Cells(1, i).Value, Worksheets("SheetA").Rows(2), 0)) then
application/worksheetfunction差異,可參考看看 這篇
看完清楚了很多! 感謝你