【发布时间】:2013-10-11 23:57:21
【问题描述】:
我有 4 列数据。它们是复制并粘贴在一起的 First Name/Last Name 列的两个单独列。
我想要做的是对姓氏进行匹配,如果它们相等,则对名字进行匹配。
列范围是动态的,这就是运行 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 开始,它应该返回匹配或不匹配(在这种情况下,只有第 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
【问题讨论】:
-
running a CONCATENATE and VLOOKUP formula works, but if I can get something less involved然后你使用的是完全 over kill VBA,它会运行得更慢并且更有可能失败?如果没坏就不要修。无论如何,我在 C 列的 A 列中看不到任何匹配项,但您说第 2 行是匹配项?如果第 2 行与第 3 行匹配,为什么第 6 行和第 7 行不匹配? -
完全同意 - 我对速度和 VBA 了解不多,所以如果我要花费相同的时间来进行连接和 Vlookup,那么可能不值得弄清楚这一点。第 2 行(A、B 列)与第 7 行(C、D 列)匹配
标签: excel vba if-statement nested vlookup