比较两列时计算重复单元格(值、文本和空)

比较两列时计算重复单元格(值、文本和空)

我有两个具有以下数据结构的工作表:

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。如何从两个不同的工作表中查找重复值matchvlookupindex

答案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(”时,它将允许您使用新的公式。

希望这可以帮助!

相关内容