こんにちは、このためのおかげで、問題は値が変化しているされているものの、そのシート1の名前が「A1」の中にあることが、その後のシート2に「F12」とし、次の週にあるかもしれませんまた:(あなたのVBAと、まだ運を使用し、それに応じて更新するためのコードを使用して、そのだけの方法ので、「F14」になる可能性 - カルム9分前
式は行くための正しい方法ですあなたは。 COUNTIF
を使用して存在を確認することができます。この数式をセルM1に入れて、引き下げます。
012それでも、コードを使用したい場合は
しかし、あなたが最初のWorksheet
からanswer(i)
に値を代入し、それが一致した場合、その後Yes
値を代入している。この(未テスト)
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
なぜあなたは最初のマッチをチェック、その後NAME1() 'と' NAME2() ''に名前を追加していますか?名前が一致するかどうかを確認する唯一の目標はありますか? – DragonSamu
こんにちは@DragonSamu、2番目の行から名前が追加されます。名前が2つのシートの間で一致していれば、13番目の列が一致する行に "はい"と表示されます。 – Calum
は、範囲全体で数式を貼り付けるのが速くないでしょうか? – DragonSamu