1

4列のデータがあります。これらは、名/姓の列をコピーして貼り付けた 2 つの別々の列です。

私がやりたいのは、姓で一致を実行し、それらが等しい場合は、名で一致を実行することです。

列の範囲は動的であるため、CONCATENATE と VLOOKUP の数式を実行すると機能しますが、あまり関与しないものを取得できれば、それは素晴らしいことです。

   A       B        C      D      E
1 Last  First   Last2   First2
2 Sharma  Abhi  Smith   Kevin
3 Philip  Matt  Smith   GEORGIA
4 Franc   Pete  John    Bon Jovi 
5 Arnold  Susan Jack    White
6 Mallo   Chad  Sharma  Katie
7 Daigle  Steve Sharma  Abhi

私の考えでは、セル E2 から開始して、一致を返すか、一致しないかを指定する必要があります (この場合、Row 2 のみが一致を返す必要があります。現在、毎回一致を返していますが、これは間違いなく正しくありません。

これは私がこれまでに書いたコードです

Sub matchFunction()

On Error Resume Next

Dim BW_Row As Long
Dim BW_Clm As Long
    Table1 = Sheet2.Range("F11:F16") ' Range of all appointments last name
    Table2 = Sheet2.Range("$G$11:$G$16") ' Range of all appointments first name
    Table3 = Sheet2.Range("$H$11:$H$16") ' Range of leads
    BW_Row = Sheet2.Range("J11").Row ' Change E column if it's a match
    BW_Clm = Sheet2.Range("J11").Column
    
        For Each c In Table1
            
            For Each d In Table2
                    
                If Application.Match(c, Table3, 0) <> "" Then
                    
                    If Application.Match(d, Table3, 0) <> "" Then
                    
                            Sheet2.Cells(BW_Row, BW_Clm) = "It's a Match!"
                    
                        Else
                                
                            Sheet2.Cells(BW_Row, BW_Clm) = "Sorry, it's not a match"
                            
                    
                    End If
                    
                End If
                    
        
        BW_Row = BW_Row + 1
        
        Next d
        
    Next c
                  
 MsgBox "Matching Finished"

End Sub
4

2 に答える 2

0

@ user2140261のコメントに+1... VBAは数式よりも遅くなります。For Each Cただし、VBA を使用する場合は、ループの代わりにこれを挿入します。

i = 11
For Each c In Table1
    If c = Cells(i, 8) Then
        If Cells(i, 7) = Cells(i, 9) Then sheet2.Cells(i, BW_Clm) = "It's a Match!"
    End If
    sheet2.Cells(i, BW_Clm) = "Sorry, it's not a match"
    i = i + 1
Next c

テスト済み

F11これはに対してチェックしH11ます。一致する場合は とG11照合I11し、一致する場合"It's a match!"は に書き込まれJ11ます。一致しない場合は、"Sorry, it's not a match"に書き込まれJ11ます。次に、行 12 のループを開始します。

于 2013-10-04T22:01:45.643 に答える