Microsoft Excel

Herbers Excel/VBA-Archiv

Duplikate bereinigen

Betrifft: Duplikate bereinigen von: Inge
Geschrieben am: 27.01.2020 09:17:46

Hallo liebe Excel Experten,

ich hoffe, einer von euch kann mir bei der folgenden Herausforderung helfen:
Ist-Situation:
Gleiche Artikelnummern (Spalte B: "Name & Parent ID") kommen mit unterschiedlichen IDs (Spalte A) mehrmals in einer Tabelle vor (zwischen zwei und 32 mal; Ergebnis ZÄHLENWENN in Spalte C).
Merkmale ("Enabled" in Spalte D und "Referenced" in Spalte E) sind für die einzelnen Artikelnummern mal auf der ersten ID gepflegt, mal auf der zweiten, mal auf der dritten usw.
Die Inhalte dieser Attribute sollen auf der ersten ID konsolidiert werden.
Artikelnummern sollen beim ersten Vorkommen in der Liste markiert werden, damit man am Ende einfach zwischen den IDs unterscheiden kann, die bleiben dürfen (=alle markierten), und denen, die rausfliegen sollen (=alle nicht markierten).

Ich habe die Ist-Situation und die Wunschvorstellung in der angehängten Datei dargestellt. Die angehängte Datei ist nur ein Ausschnitt, ich hätte sonst bei weitem die maximal erlaubte Dateigröße überschritten

Im Voraus schon mal vielen Dank für eure Hilfe!
Inge

https://www.herber.de/bbs/user/134729.xlsx

Betrifft: AW: momentan soll nichts bereinigt werden ...
von: neopa C
Geschrieben am: 27.01.2020 09:52:48

Hallo Inge,

... sondern wie ich Deinen bisherigen Angaben entnehmen kann, willst Du ja nur Datensätze kennzeichnen. Oder?

Die Logik dazu erschließt sich mir zwar noch nicht wirklich, aber mit folgender einfachen Formel kann ich zumindest für das Beispiel das gewünschte erzielen:

=WENN((C2=1)+(E2="");"";"x") und diese nach unten kopieren.

Gruß Werner
.. , - ...

Betrifft: AW: momentan soll nichts bereinigt werden ...
von: Inge
Geschrieben am: 27.01.2020 10:38:29

Hallo Werner,
danke, das funktioniert schon super! Könntest du vielleicht kurz in "Prosa" beschreiben, was genau die Formel macht? Dann versteh ich es besser und kann es hoffentlich beim nächsten Mal alleine.

Und du hast völlig recht, an dieser Stelle wird nichts bereinigt. Ich brauche den Identifikator, um die Dubletten aus einem anderen System löschen zu können.

Hast du auch eine Idee, wie man die Attribute, die jetz mal in einer Zeile und mal in einer anderen gepflegt worden sind, in einer Zeile zusammenfassen kann?

Danke nochmal,
Inge

Betrifft: AW: zur Formel ...
von: neopa C
Geschrieben am: 27.01.2020 10:49:11

Hallo Inge,

... gibt es nicht viel zu schreiben. Sie prüft lediglich ob der Zählwert in Spalte C der gleichen Zeile gleich 1 ist oder keine Datenwert in Spalte E der gleichen Zeile steht. Wenn dem so sein sollte dann ist das Ergebnis ="" ansonsten ="x".

Deine zusätzliche Fragestellung ist mir unklar. Wie stellst Du Dir denn für Deine Beispieldatei das Ergebnis vor?

Gruß Werner
.. , - ...

Betrifft: AW: zur Formel ...
von: Inge
Geschrieben am: 27.01.2020 11:01:06

Hallo werner,

ich verstehe nicht, warum der Wert in der Spalte E für die Formel relevant ist. Die Zelle E2, zum Beispiel, könnte auch leer sein, und es wäre dennoch eine Dublette, die in Zeile 2 zum ersten Mal auftaucht.

Hast du zu der zusätzlichen Fragestellen den zweiten Tab im Anhang gesehen?
Es ist so, dass in diesem Beispiel zwei Attribute pro Artikel wichtig sind: Enabled und Referenced. Meistens ist das eine Attribut bei der ersten Artikelnummer gefüllt, das andere bei einer beliebigen anderen Artikelummer. Am Ende hätte ich gerne einen eindeutigen Artikel mit einer eindeutigen ID, bei dem diese beiden Attribute in den entsprechenden Spalten nebeneinander gefüllt sind.
Ich hoffe, das ist so verständlicher.
Gruß,
Inge

Betrifft: AW: hierzu nun ...
von: neopa C
Geschrieben am: 27.01.2020 11:12:38

Hallo Inge,

... ich schrieb ja schon in meinem ersten Beitrag, dass ich Deine Datenstruktur & Logik nicht wirklich verstehe und deshalb meine Formel nur Deine Wunschvorstellung in der Beispieldatei realisiert.
Wenn E2 leer ist, so ist doch noch immer C2 <>1 und damit ergibt sich dafür im Ergebnis meiner Formel ein "x", denn das "+" in der Formel steht für eine ODER-Beziehung.

Und auch Deine Erklärung zu Deiner zusätzlichen Fragestellung ist mir nicht wirklich verständlich geworden.

Vielleicht solltest Du doch mal eine entsprechende ergänzte/erweiterte Beispieldatei einstellen, wie Deine Zielstellung dafür aussieht.

Gruß Werner
.. , - ...

Betrifft: AW: wenn E2 leer ist ...
von: neopa C
Geschrieben am: 27.01.2020 11:38:31

Hallo Inge,

... dann ergibt sich mit meiner bisherigen Formel als Ergebnis natürlich ="" (weil es ja eine ODER-Beziehung ist), da hatte ich mich zuletzt vertan und falsches geschrieben. Sorry.
Aber dann müsste der "Referenced-Wert" in E3 stehen. und es in F3 das "x" sich ergeben.

Gruß Werner
.. , - ...

Betrifft: AW: zur Formel ...
von: Daniel
Geschrieben am: 27.01.2020 11:27:04

HI
das zweite kannst du so erreichen:
1. markiere in der Spalte mit den Lücken alle Leerzellen.
dazu gibt es eine Funktion im Menü: Start - Bearbeiten - Suchen und Auswählen - Inhalte - Leere Zellen

2. gib dann, wenn die Leerzellen markiert hast, die Formel ein:
(sinngemäß) =Wenn(ID = ID in zeile Drunter; Wert aus Zeile Drunter; "")
für deinen Fall ist D2 die erste leere Zelle, daher: =WENN(B2=B3;D3;"")

dann die ganze Spalte kopieren und als Wert einfügen.
jetzt sollten immer in der ersten Zeile zu einer ID alle Informationen vorhanden sein.

Gruß Daniel

Betrifft: AW: momentan soll nichts bereinigt werden ...
von: Inge
Geschrieben am: 27.01.2020 17:02:05

Hallo ChrisL,
darf ich noch fragen, mit welcher Join Art du die Haupt- und Hilfsabfragen zusammengefügt hast?
Danke!
Inge

Betrifft: AW: momentan soll nichts bereinigt werden ...
von: ChrisL
Geschrieben am: 27.01.2020 19:05:10

Hi Inge

Gute Frage. Ich meine es waren alles LEFT OUTER JOIN
https://de.wikipedia.org/wiki/Join_(SQL)

Da alle Aggregationen in den Hilfsabfragen erfolgt sind, sollte die Hauptabfrage die originale Anzahl Datensätze haben. Ausgehend von der Hauptabfrage ein Left-Join ausgeführt, enthält alle Datensätze der Hauptabfrage und die vorhandenen aus der Hilfsabfrage. Nicht vorhandene werden automatisch mit null aufgefüllt.
Da Hilfs- und Hauptabfrage auf der gleichen Datenquelle beruhen, dürfte die umgekehrte Situation (in der Hilfsabfrage gibt es Datensätze, welche in der Hauptabfrage nicht vorhanden sind) gar nie eintreten. Und wenn, dann würden sie aufgrund des Left-Join ignoriert.

Beispielhaft (Problemstellung: erster Wert markieren)

Hauptabfrage (Index hinzugefügt)
ID, Index
A , 1
A , 2
B , 3
C , 4
C , 5
Hilfsabfrage (Duplikat der Hauptabfrage)
ID, Index
A , 1
A , 2
B , 3
C , 4
C , 5
Hilfsabfrage (Schritt: Gruppieren nach, Option "Minimum")
ID, Index
A , 1
B , 3
C , 4
Hauptabfrage LEFT OUTER JOIN Hilfsabfrage USING (Index)
ID, Index, Hilfsabfrage.ID
A , 1 , A
A , 2 , null
B , 3 , B
C , 4 , C
C , 5 , null
Bedingte Spalte: Wenn nicht null dann "x"

cu
Chris

Betrifft: PQ Lösung
von: ChrisL
Geschrieben am: 27.01.2020 11:40:46

Hi Inge

https://www.herber.de/bbs/user/134742.xlsx

1. Enabled/Referenced auffüllen
Je eine Hilfsabfrage, ID und Enabled/Referenced, gefiltert ohne Leerzeilen. Die beiden Hilfsabfragen mit der Hauptabfrage verbinden.

2. Erster Wert pro ID ermitteln
Weiter ein Index hinzufügen. Dann gruppieren mit Option "Minimum", wodurch der erste Wert pro ID ermittelt wird. Dann die Hilfsabfrage wieder mit der Hauptabfrage verbinden. Bedingte Spalte, um Indexzahl in "x" umzuwandeln.

cu
Chris

Betrifft: AW: hierzu nur ergänzt ...
von: neopa C
Geschrieben am: 27.01.2020 11:55:18

Hallo Chris,

... Inge hat eine XL-Version vor 2013 angegeben. Deshalb der Hinweis, dass sie in Ihrer Version erst das entsprechende Add-In von der MS_Seite herunterladen (kostenfrei) und installieren muss, bevor sie damit arbeiten kann und es mW auch nur ab Excel 2010 möglich ist.

Gruß Werner
.. , - ...

Beiträge aus dem Excel-Forum zum Thema "Duplikate bereinigen"