Wie kann ich doppelte Werte in einer Spalte finden, indem ich die Ergebnisse durch Bereiche in einer anderen Spalte eingrenze?

Wie kann ich doppelte Werte in einer Spalte finden, indem ich die Ergebnisse durch Bereiche in einer anderen Spalte eingrenze?
     A          B            C
1  RANGES     VALUES   FORMULA NEEDED  
2    1          x           yes
3    1          x           yes
4    2          x           no
5    3                      no
6    3          y           yes
7    3          y           yes
8    4          x           no
9    5          z           no
10   5          y           no

Ich möchte also Duplikate in WERTEN identifizieren und die Ergebnisse durch Werte in BEREICHEN abgrenzen. Das Ergebnis soll wie in der Spalte BENÖTIGTE FORMEL aussehen.

Was ich brauche, sind die doppelten Werte aus der Spalte VALUES. Genauer gesagt muss ich sehen, ob das, was ich in der Spalte VALUES finde, ein Duplikat ist, wobei ich (das ist wichtig) den Bereich der Duplikate aus der Spalte RANGES als Trennzeichen verwende. Ich hoffe, das war verständlich.

Wenn also: – x in den Zeilen mit der Nummer 1 dupliziert wird, ist dies ein Ja. – y in den Zeilen mit der Nummer 3 dupliziert wird, ist dies auch mit leeren Werten oder zusätzlichen Werten wie x, die dort eingefügt werden, immer noch ein Ja.

Dies ist mein fehlgeschlagener Versuch:

=IF(AND(A2=A1,B2=B1),"yes","no")

Antwort1

Sie müssen VBA verwenden.

Sie müssen also die Werte der Spalten A und B in ein Array einlesen.
Nehmen wir an, wir haben eineAnordnungbenannt C, also wird C(1) zu A2 + B2 = "1x"; C(2) wird zu A3 + B3 = "1x"; C(3): A4 + B4 = "2x"; usw.
Sie führen hierfür eine For-Schleife aus, um alle Werte einzulesen, die Sie in C(i) haben.

Wenn Sie das haben, googeln Sie einfach. excel vba how to find duplicate values in an array
Ich bin sicher, Sie werden viele Lösungen dafür finden.

Nachdem Sie dies erhalten haben, erhalten Sie wahrscheinlich ein Array, das Werte in einem anderen oder demselben Array speichert, beispielsweise in Booleschen Werten (true/false).

Führen Sie also einfach eine weitere For-Schleife aus, die ungefähr so ​​aussieht:
for i = 1 to NumberOfRows if C(i) = true then Cells(i, "C").Value = "true" next i

Natürlich gibt es noch weitere Lösungsansätze, aber ich würde es so machen.
Wenn Sie Fragen haben, zögern Sie nicht, sie zu stellen!

verwandte Informationen