Zählen Sie doppelte Zellen (Werte, Text & Leer), wenn Sie zwei Spalten vergleichen

1

Ich habe zwei Arbeitsblätter mit folgenden Datenstrukturen:

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

Was ich finden muss, sind doppelte Werte von Blatt b gegen Blatt a.

Ich habe versucht countif, match, vlookup, und indexFunktionen, aber ich bin immer noch nicht zufrieden mit dem Ergebnis. Benötige Position, da Duplikat mehr als dreimal wiederholt wird. Finde die genaue Positions-ID für dieses Duplikat. Wie finde ich doppelte Werte aus zwei verschiedenen Blättern?

Nikola Karcev
quelle
Warten Sie, ich bin verwirrt. Versuchen Sie, doppelte Werte oder Positionen oder nur die Anzahl der Duplikate zu finden?
James Mertz
Ihre Frage ist sehr verwirrend. Sie zeigen vier Spalten an, aber keine Zeile in sheet astimmt mit einer Zeile in sheet ballen vier Spalten überein. Müssen Sie sie also alle anzeigen? Suchen Sie alle doppelten Werte, wie a.Name[3]= 3m= b.Name[5], a.Name[5]= aap= b.Name[3], a.Name[1]= AA= b.Name[2]= aa(Groß- und Kleinschreibung), a.Id[2]= 015= b.Id[5]= 15(ignorieren führende Nullen), a.abn[1]= 123= b.abn[2], a.abn[3]= (Leerzeichen) = b.abn[4]und alle Spiele in der addressSpalte? Oder interessieren Sie sich nur für eine Spalte? … (Fortsetzung)
Scott
(Fortsetzung)… Wenn Sie nur an einer einzelnen Spalte interessiert sind, (a) sagen Sie dies bitte und (b) zeigen Sie diese Spalte zuerst mit möglicherweise einer anderen Spalte, um die zugehörigen Daten zu veranschaulichen. Wenn Sie an mehr als einer Spalte interessiert sind, formulieren Sie Ihre Frage (Titel) neu - "Vergleichen Sie zwei Arbeitsblätter", vielleicht? Zeigen Sie uns, wie das Ergebnis aussehen soll. Möchten Sie zählen, eine Position finden oder beides? Was hat das "3-fache" mit der Frage zu tun? Bitte geben Sie uns mindestens ein Beispiel dafür , was Sie genau ausprobiert haben und warum Sie es als unbefriedigend empfunden haben.
Scott

Antworten:

1

Klingt so, als ob Sie mit ein paar Duplikaten einverstanden sind, aber für alle über 3 möchten Sie sie sehen.

Ich habe eine UDF namens "xMatch" zusammengestellt, die Ihnen helfen könnte. Es ist genau wie Match, da es die Position eines Werts zurückgibt, aber Sie können angeben, dass Sie den n-ten Wert finden möchten (z. B. das dritte Duplikat).

=xMatch("Look for", "Look in this column", "Find the nth one")

Damit es funktioniert, müssen Sie diesen Code in ein Modul einfügen (ich erkläre, wie unten, wenn Sie nicht vertraut sind):

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

Um diesen Code zu platzieren, drücken Sie in Ihrer Excel-Datei Alt + F11. Der VBA-Editor wird geöffnet. Wählen Sie in der Symbolleiste Einfügen und dann Modul aus .

Öffne das neue Modul und füge den Code ein!

Wenn Sie nun "= xMatch (" in eine Zelle eingeben, können Sie Ihre neue Formel verwenden.

Hoffe das hilft!

Aaron Contreras
quelle