如果另外两列匹配,我想比较excel中的两列。
A B C D
$10 1234D $40 100D
$20 1235D $10 1234D
$30 122D $20 1235D
$40 1222D $30 1222D
首先我需要比较col A和C如果在col C中找到任何匹配,那么我需要比较B和D匹配。示例I在A中有10美元,其ID为1234D.i需要比较C中的相同值。如果我在C中找到10美元但其ID不是1234D我需要在另一列中显示不匹配的一个。
我可以匹配A和C,如下所示。但是之后我对如何比较B和D感到困惑?我是excel vba的新手,并感谢任何人帮助我这样做。< / p>
Function Find_Matches()
Dim CompareRange As Variant, SelectionRange As Variant, x As Variant, y As Variant
' compare the selection.
Sheets("Menu").Activate
Set SelectionRange = Range("A2:A6")
Set CompareRange = Range("C2:C6")
' Loop through each cell in the selection and compare it to
' each cell in CompareRange.
For Each x In SelectionRange
For Each y In CompareRange
If x = y Then x.Offset(0, 4) = True
Next y
Next x
End Function
答案 0 :(得分:1)
我需要以任何方式使用vba。
使用此宏:
Sub Find_Matches()
Dim rng As Range
Set rng = Sheets("Menu").Range("A2:A6")
With rng.Offset(, 4) ' write result in column E
.FormulaArray = "=ISNUMBER(MATCH(" & rng.Address & "&""|""&" & _
rng.Offset(, 1).Address & "," & rng.Offset(, 2).Address & _
"&""|""&" & rng.Offset(, 3).Address & ",0))"
.Calculate
.Value = .Value
End With
End Sub
它在True
列中写入结果(False
或E
)。
<强>解释强>
E2:E6
数组公式=ISNUMBER(MATCH($A$2:$A$6 & "|" & $B$2:$B$6,$C$2:$C$6 & "|" & $D$2:$D$6,0))
- 如果我们在范围True
的任意行中找到A2
和B2
,则返回C2:D6
,例如C3
和D3
。 .Value = .Value
部分用他们的结果重写公式A
和B
,并搜索结果列C
和D
。 & "|" &
?想象一下以下情况:A B C D
$101 234D $10 1234D
从技术上讲,A1 & B1
和C1 & D1
的连接会给你相同的结果:$101234D
,但我们清楚地看到没有匹配。这就是我在连接值时使用|
作为分隔符的原因:A1 & "|" & B1
返回$101|234D
而C1 & "|" & D1
返回$10|1234D
并且它们不一样,因为我们需要它
答案 1 :(得分:0)
在F中创建一个新列,它是A&amp; A的串联B.在G栏中做同样的事情以连接C&amp; C中的值。 d。
然后使用一个使用VLookup的公式来查看是否查找A&amp; A的串联B返回“N / A”错误。如果这是错误的,则您有一个匹配的列。
所以,F2的公式是
'=concatenate(A2, B2)'
G2的公式是
'=concatenate(C2, D2)'
和你的vlookup的公式是
'=IF(ISNA(Vlookup(concatenate(a2, b2), $F$2:$G$<LastRowOfData>, 2, FALSE)), "", "Matches")
如果需要在vba中,您可以设置一个宏来执行这些步骤。