# Microsoft Office Application Help - Excel Help forum > Non English Excel >  >  Duplikate nach bestimmtem Teil eines Feldes vergleichen und markieren um sie auszublenden

## excelmarco

Ich möchte zwei Spalten nebeneinander oder die beiden ersten Spalten zweier Tabellenblätter miteinander vergleichen (Für mich ist es gleich auf welche Art. Einfach was in der Abfrage leichter geht), die beide nach einem bestimmten Schema beginnen. 

Beispielsweise so:		

*Spalte A:*
/WortMitDemAlleBeginnen/WortDasVerglichenWerdenSoll/RestDerNichtVerglichenwerdensoll

*Spalte B oder Spalte A eines zweiten Tabellenblattes:*
/WortMitDemAlleBeginnen/WortDasVerglichenWerdenSoll/AndererRestDerNichtVerglichenwerdensoll

D.h. ich benötige eine Abfrage, die die Felder ausliest und lediglich den Text zwischen dem zweiten / und dritten / vergleicht. Oder alles bis zum dritten /, was die Abfrage vermutlich vereinfacht und zum selben Ergebnis kommt.

Um jeweils die Zeilen-Pärchen erkenntlich und löschbar zu machen, wäre meine Idee, in die Spalte daneben (z.B. *Spalte C*) den Text "Duplikat" einfügen zu lassen. So könnte ich später danach Filtern und diese Zeilen ausblenden oder löschen.

Kann mir hierfür einer eine Abfrage formulieren?

Ich hatte bereits gegoogelt und folgende Ideen gefunden.
Für das Auslesen bis zu einem bestimmten Zeichen vielleicht so in der Art?
=LINKS(A1;SUCHEN("/";A1;SUCHEN("/";A1;SUCHEN("/";A1)+1)-1)

Für das Vergleichen und den Eintrag "Duplikat" in eine weitere Spalte fand ich folgendes, was aber bei mir nicht funktionierte:
=WENN(ZÄHLENWENN(A:A;A1)>1;"Duplikat";"")

Zudem weiß ich nicht, wie ich die beiden Abfragen zusammenbringen kann.

Für eine Hilfe hierbei wäre ich super happy!

Danke und Grüße,
Marco

----------


## HaHoBe

Hallo Marco,

in H1 habe ich den gleichbleibenden Text eingefügt (/WortMitDemAlleBeginnen/), in H2 den Suchbegriff (WortDasVerglichenWerdenSoll).

Für A1 und B1 könnte man die folgende Formel verwenden;




```
Please Login or Register  to view this content.
```


Für A1 auf zwei Tabellen und der Formel auf der ersten Tabelle könnte nach Anpassung der Tabellennamen folgende Formel verwendet werden:



```
Please Login or Register  to view this content.
```


Nur wirst Du für die Nutzung des Autofilters wohl in die erste Zeile Überschriften einfügen dürfen.

Ciao,
Holger

----------


## excelmarco

Hi Holger,

vielen Dank für deine schnelle Antwort!

Leider kommt bei mir nur die Meldung #WERT!

Woher weiß Excel eigentlich, dass beispielsweise H1 für den gleichbleibenden Text (/WortMitDemAlleBeginnen/) steht bzw. woher weiß es, ab wo H2 beginnt und endet?

In H2 ist übrigens noch ein Unterstrich enthalten, falls das für die Abfrage relevant ist. Also in folgendem Format: /Wort_Wort/

Danke dir,
Marco

----------


## HaHoBe

Hallo, Marco,

leider kann ich von hier aus nicht sehen, was in Deiner Mappe die Fehlermeldung hervorruft, wenn ich Deinen Beschreibungen aus dem ersten Beitrag folge.

Es hat sich übrigens ein Fehler eingeschlichen:



```
Please Login or Register  to view this content.
```


Die Funktion TEIL erwartet gem. Hilfe die folgenden Bestandteile:  die Angabe des gesamten Textes (steht in A1), die Angabe des gleichbleibenden Textes (steht mit einer absoluten Adressierung in H1, was das Kopieren bzw. Auffüllen erleichtert) und wird per LÄNGE als Startwert benutzt, den zu suchenden Begriff aus H2 (wieder absolut und als Anzahl der Buchstaben für die Zahl der zu vergleichenden Buchstaben).

Ciao,
Holger

----------


## excelmarco

Hallo Holger,

den Fehler mit dem #WERT! konnte ich beheben. Ich hatte erst nicht verstanden, dass ich (/WortMitDemAlleBeginnen/) und (WortDasVerglichenWerdenSoll) selbst in die Felder H1 und H2 eintragen sollte.

Allerdings ist der Wert aus H2 nicht immer gleichlang, da es sich um Namen handelt (vorname_nachname).

Kann es sein, dass die Duplikate jeweils in der selben Zeile stehen müssen, damit sie als Duplikate markiert werden?

Ich geh jetzt nochmal ne Runde raus in die Sonne. Mach du das auch mal, so lange sie noch so schön scheint!  :Wink:  Ich antworte dann später wieder.

Grüße,
Marco

----------


## HaHoBe

Hallo, Marco,

richtig, die Formel geht von der gleichen Zeile aus. Wenn es so sein soll, dass die Werte einer Spalte mit allen Werten der anderen Spalte verglichen werden soll, würde ich VBA mit einem Makro einsetzen,

Ciao,
Holger

----------


## excelmarco

Hi Holger,

dann funktioniert das für meinen Zweck leider nicht, wenn es nur zeilenweise vergleicht.

Ist es viel aufwändiger und weißt du was ich in das Script schreiben müsste, damit es die kompletten Spalten vergleicht?

Danke dir,
Marco

----------


## HaHoBe

Hallo, Marco,

ohne genau zu wissen, was und warum gemacht werden soll, möchte ich nur das Vorgehen skizzieren, wie ich es bisher verstanden habe. 

Wenn die Werte in der Saplte A nur einmal vorkommen können, kann eine For Each Schleife zum Durchlaufen des Bereiches verwendet werden. Der jeweilge Suchbegriff kann über die Verwendung von Split mit Trennzeichen / im zweiten Bereich des Arrays genutzt werden. Abschließend würde ich in der Suchspalte per Find bzw. FindNext nach Fundstellen (Range-Objekte) suchen lassen und neben den Fundstellen die Angaben per Offset schreiben.

Ich zumindest bin den Tag über nicht erreichbar und kann Feagen Deinerseits frühestens heute Abend beantworten.

Ciao,
Holger

----------


## excelmarco

Hallo Holger,

die Werte in Spalte A können theoretisch bereits dort doppelt vorkommen. Somit wäre es gut, wenn sowohl Spalte A, als auch Spalte B komplett durchsucht und auf Duplikate verglichen werden. Falls das die benötigte Formel vereinfacht, könnte ich auch den Inhalt aus Spalte B unter den von Spalte A verschieben.

Ansonsten klingt dein Vorschlag sehr gut, wenn ich alles korrekt verstanden habe.

Vorerst nur zum Verständnis. Wäre es auch möglich, am Ende die gesonderte Liste mit den Duplikaten darzustellen und dort jeweils von allen Duplikaten nur eine Zeile zu behalten, falls es z.B. 2-5 Zeilen an Duplikaten gibt? Falls dies viel zusätzliche Arbeit bedeutet und dir beides zusammen zu viel wird, wäre das oben beschriebene Skript zum Markieren/Entfernen der Duplikate wichtiger.

Danke dir,
Marco

----------


## HaHoBe

Hallo, Marco,

kannst Du eine kleinme Beispielmappe mit einigfen Spieldaten einstellen und festlegen, was genau als Ergebnis Du möchtest? Dann sollte ein Lösungsvorschlag kein Problem sein.

Ciao,
Holger

----------


## AliGW

Um eine Beispielmappe festzulegen:

Unfortunately the attachment icon doesn't work at the moment, so to attach an Excel file you have to do the following: just before posting, scroll down to *Go Advanced* and then scroll down to *Manage Attachments*. Now follow the instructions at the top of that screen.

----------


## excelmarco

Hallo Holger,

anbei die Beispielmappe.

In der Spalte Notiz habe ich lediglich für dich zum leichteren Verständnis farblich die Pärchen bzw. Drillinge der Duplikate hervorgehoben.
D.h. die Spalte mit der farblichen Markierung muss nicht durch das Skript erfolgen und kann gelöscht werden.

Auf dem zweiten Tabellenblatt ("je ein Duplikat behalten") sind von jedem Duplikat des ersten Tabellenblattes ("Dupl. filterbar machen") je nur das erste doppelte Element aufgelistet, sodass in dieser Liste nichts doppelt ist.

Vielen Dank schon mal und Grüße,
Marco

@AliGW Danke für den Hinweis.

----------


## canapone

Hallo,


please refer to the attachment






```
Please Login or Register  to view this content.
```

----------


## excelmarco

@canapone: Danke für die Formel. Wenn ich es richtig verstehe, erzeugt sie die Liste der Duplikate. Also je des ersten doppelten Elements. Einmal als neue Spalte auf dem selben Tabellenblatt und einmal auf dem zweiten Tabellenblatt.
Damit ist aber der erste Teil der Anforderung ausgelassen. Das Markieren sämtlicher Duplikate (siehe Spalte B) um danach filtern zu können, damit ich mir auch die Liste der Unikate anzeigen lassen kann.

@HaHoBe: Holger, wenn du noch eine andere Lösung per Skript hast, wäre ich sehr neugierig auf die Lösung.

----------


## canapone

Hallo


bitte sehen Sie den Anhang, die grünen Formeln.


Ich hoffe es hilft

----------


## excelmarco

Danke für die Formel. Das geht schon sehr in die richtige Richtung, doch werden hier lediglich die ersten 15 Zeichen verglichen, wenn ich das richtig verstehe.
Dadurch ist .../Bruce_Banner/ auch als Duplikat markiert, obwohl der ja kein Duplikat von .../Bruce_Wayne/ ist.
Wir müssen die Zeichen zwischen dem ersten und dritten "/" (oder zweiten und dritten - was einfacher für die Formel ist) vergleichen.

Siehst du eine Möglichkeit die Abfrage mit einzubauen?

Danke dir,
Marco

----------


## canapone

Hello

Ich versuche, die letzten / abfangen

B2:


=WENN(SUMMENPRODUKT(--(TEIL($A$2:$A$13;1;AGGREGAT(14;6;ZEILE(1:30)/(TEIL(A2;ZEILE(1:30);1)="/");1))=TEIL(A2;1;AGGREGAT(14;6;ZEILE(1:30)/(TEIL(A2;ZEILE(1:30);1)="/");1))))>1;"Duplikat";"")

Grüße

----------


## canapone

100 sollte ausreichen, um





```
Please Login or Register  to view this content.
```



Ich will nicht INDIREKT verwenden...

----------


## excelmarco

Sehr cool, vielen Dank! Sieht so aus, als würde es so sauber funktionieren!

Hast du auch die Formeln für das zweite Tabellenblatt geändert?

Warum willst du nicht INDIREKT verwenden? Ich weiß ehrlich gesagt gar nicht, wofür man es verwendet und was die Alternative wäre.

Danke dir,
Marco

----------


## canapone

Hallo

Ich bin mit - natürlich -die Google Übersetzer.
Ich verließ die gleichen Formeln in dem zweiten Blatt: Formeln funktionieren sollen.
Ich will nicht indirekt indirekt eine veränderliche Funktion verwenden, und kann zu Problemen führen, wenn Sie auf große Datenbanken arbeiten.
Ich habe keine Zeit, die Formeln des ersten Bogens zu testen ... hoffe, dass alles gut ist, aber ich bin nicht sicher,

----------


## excelmarco

Hi,

wofür steht die 100, von der du sagst, die sollte ausreichen?
In der Liste könnten ca. bis zu 50.000 Zeilen sein.

Ok, dann besser ohne INDIREKT.

Kein Problem, ich mache ein paar Stichproben, ob es korrekt funktioniert.


*Or in English if you prefer:*

what did you mean by "100 should be enough" you mentioned earlier?
The list may contain 50.000 rows.

Ok, let's avoid INDIREKT.

No problem, I'll have some spot checks to see if it works.

----------


## canapone

Hi,

I did not test formulas I've shared in first sheet in column B to state firmly they are  "robust".

Perhaps the best way is to use an helper column in D2 and below 

=LINKS(A2;AGGREGAT(14;6;ZEILE($1:$100)/(TEIL(A2;ZEILE($1:$100);1)="/");1))

The formula searches last position of "/" among first 100 characters.

It should be enough, if not

=LINKS(A2;AGGREGAT(14;6;ZEILE($1:$300)/(TEIL(A2;ZEILE($1:$300);1)="/");1))

In B2  COUNTIF can easily process the selection. 


My explanation is poorer than my English ( und Deutsche)

Regards

----------


## excelmarco

Hi,

thanks for the explanation.

100 should be just fine then.

Best Regards!

----------


## canapone

Danke für die Antwort

Grüße aus Florenz

----------

