感謝,嗨,問題是雖然觀念正在轉變,所以在表1中的名稱可能是在「A1」,但隨後在表2是「F12」,然後下週可以在「F14」,所以它只是使用代碼的方式進行相應的更新,也用你的VBA和仍然沒有運氣:( - Calum 9分鐘前
公式是去你的正確方法。可以用COUNTIF
來檢查是否存在,把這個公式放在M1單元格中並將其拉下來,
=IF(COUNTIF($F$1:$F$14000,A1)>0,"Yes","No")
不過,如果你仍然想使用代碼,試試這個(未經測試)
Sub Sample()
Dim name1 As Variant, name2 As Variant, answer(1 To 14000) As String
Dim ws As Worksheet
Dim i As Long
With ThisWorkbook
name1 = .Worksheets("Sheet0").Range("A1:A14000").Value
name2 = .Worksheets("Sheet1").Range("F1:F14000").Value
For i = 1 To 14000
If IsInArray(name1(i, 1), name2) Then answer(i) = "Yes" Else answer(i) = "No"
Next i
.Worksheets("Sheet1").Range("M1").Resize(UBound(answer), 1).Value = _
Application.WorksheetFunction.Transpose(answer)
End With
End Sub
Function IsInArray(stringToBeFound As Variant, arr As Variant) As Boolean
Dim bDimen As Byte, i As Long
On Error Resume Next
If IsError(UBound(arr, 2)) Then bDimen = 1 Else bDimen = 2
On Error GoTo 0
Select Case bDimen
Case 1
On Error Resume Next
IsInArray = Application.Match(stringToBeFound, arr, 0)
On Error GoTo 0
Case 2
For i = 1 To UBound(arr, 2)
On Error Resume Next
IsInArray = Application.Match(stringToBeFound, Application.Index(arr, , i), 0)
On Error GoTo 0
If IsInArray = True Then Exit For
Next
End Select
End Function
爲什麼你第一次添加名字'名1()'和'名2()',然後檢查是否匹配?你唯一的目標是檢查名字是否匹配? – DragonSamu
Hi @DragonSamu,從第二行開始添加名稱,如果兩張表之間的名稱匹配,則第13列在匹配行上顯示「yes」。 – Calum
不會在整個範圍內粘貼公式會更快? – DragonSamu