我有两个具有以下数据结构的工作表:
sheet a) Id Name abn address sheet b) Id Name abn address
1 AA 123 ac 25 ad 124 ab
015 Ac 125 aw 02 aa 123 ac
26 3m az 8 aap 234 df
32 im 98 op 17 aj aw
230 aap 234 df 15 3m 160 az
我需要找到工作表 b 中与工作表 a 重复的值。
我尝试过countif
、、和函数,但对结果仍然不满意。需要位置,因为重复项重复了 3 次以上,请找到该重复项的准确位置 ID。如何从两个不同的工作表中查找重复值match
?vlookup
index
答案1
听起来你对一些重复项没意见,但是如果超过 3 个,你就希望看到它们。
我整理了一个名为“xMatch”的 UDF,它可能会对你有所帮助。它就像 Match 一样,它会返回值的位置,但它可以让你指定要查找的第 n 个值(例如,第三个重复项)。
=xMatch("Look for", "Look in this column", "Find the nth one")
为了使其工作,您需要将此代码插入模块(如果您不熟悉,我将在下面解释如何操作):
Public Function xMatch(lookup_value As String, column_array As Range, find_nth As Integer)'
Dim aSize As Integer 'Rows in the column_array
Dim Hit() As Long 'Array that keeps track of all match locations
Dim i As Long 'Iterator
Dim z As Long 'Counts zeroes
Dim Pos As Integer 'Position of our desired match in the column array
aSize = column_array.Rows.Count
ReDim Hit(1 To aSize)
'Check each cell in the range for matches
'When a match is found, note it's postion in the Hit array
'If a match isn't found, add another zero to the count
For i = 1 To aSize
If (InStr(1, column_array(i), lookup_value) > 0) Then
Hit(i) = 1 * i
Else
z = z + 1
End If
Next i
'Small finds the kth smallest number, but considers ties as seperate numbers
'Consider {1,0,0,2}
'1st smallest number is 0, and the second smallest number is also 0
'So we need to screen out the all the zeros (z) and then find the nth item after that
Pos = WorksheetFunction.Small(Hit, z + find_nth)
xMatch = Pos
End Function
要输入此代码,请按Alt+F11从 Excel 文件中,它将打开 VBA 编辑器。在工具栏上,选择插入,然后选择模块。
打开新模块并粘贴代码!
现在,当您在单元格中输入“=xMatch(”时,它将允许您使用新的公式。
希望这可以帮助!