Calc: Duplikate in Zellen entfernen
Moderator: Moderatoren
Calc: Duplikate in Zellen entfernen
Hallo miteinander.
Trotz intensiver Suche konnte ich im Forum keine Lösung finden. Deshalb möchte ich folgende Frage stellen:
In einer Tabelle befinden sich Zellen, die doppelte Strings beinhalten. Z. B. Zelle B2: " Müller // Meier // Schulze // Meier ".
Ist es mit einen Makro möglich, den doppelten Eintrag (in diesem Fall "Meier") zu entfernen? Oder hat sogar jemand ein Makro dafür?
Gruß
Uwe
Trotz intensiver Suche konnte ich im Forum keine Lösung finden. Deshalb möchte ich folgende Frage stellen:
In einer Tabelle befinden sich Zellen, die doppelte Strings beinhalten. Z. B. Zelle B2: " Müller // Meier // Schulze // Meier ".
Ist es mit einen Makro möglich, den doppelten Eintrag (in diesem Fall "Meier") zu entfernen? Oder hat sogar jemand ein Makro dafür?
Gruß
Uwe
Zuletzt geändert von retuwe61 am Mo, 06.11.2017 22:41, insgesamt 2-mal geändert.
Angewandt wird LibeOffice Version 5.1.6.2
Re: Calc: Duplikate in Zellen entfernen
Ja, ist es. Eventuell sogar mit Hausmitteln, also ohne Makro. Hängt von der Konkretisierung deines Wunsches ab.
Sag uns bitte noch, ob es sich um eine Writer- oder eine Calc-Tabelle handelt. Wichtig ist auch noch, ob du nur „Meier“ loswerden – also den Zellinhalt löschen – willst, oder die komplette Tabellenzeile, in der „Meier“ steht.
Für Calc-Tabellen und das Entfernen der ganzen Zeile such hier im Forum in der Rubrik Calc nach »Duplikate löschen« und/oder »doppelte Einträge«. Damit findest du zig Lösungen.
Je nach dem wie der Verarbeitungsprozess aussieht und wie groß die Tabelle ist, kommt für die Bereinigung einer Writer-Tabelle eventuell eine Kopie in Calc in Frage, die nach der Verarbeitung wieder ins Writer-Dokument zurück kopiert wird. Denkbar auch, die bereinigte Calc-Tabelle also solche ins Writer-Dokument zu integrieren.
Gruß
lorbass
Re: Calc: Duplikate in Zellen entfernen
Hallo lorbass.
Steht im Betreff, dass es sich um Zellen in Calc handelt.
Und nein, ich möchte weder die komplette Zeile noch den kompletten Zelleninhalt löschen. Einzig der doppelte Teilstring in der Zelle soll entfernt werden. Im o.g Beispiel soll in Zelle B2 also "Müller // Meier // Schulze //" oder besser "Müller // Meier // Schulze" verbleiben.
Hintergrund ist, dass ich Duplikatzeilen schon vorher automatisch entfernt und die Zelleninhalte der duplikatverursachenden Spalte in einer einzigen Zelle (hier B2) zusammengeführt habe.
Gruß
Uwe
Steht im Betreff, dass es sich um Zellen in Calc handelt.
Und nein, ich möchte weder die komplette Zeile noch den kompletten Zelleninhalt löschen. Einzig der doppelte Teilstring in der Zelle soll entfernt werden. Im o.g Beispiel soll in Zelle B2 also "Müller // Meier // Schulze //" oder besser "Müller // Meier // Schulze" verbleiben.
Hintergrund ist, dass ich Duplikatzeilen schon vorher automatisch entfernt und die Zelleninhalte der duplikatverursachenden Spalte in einer einzigen Zelle (hier B2) zusammengeführt habe.
Gruß
Uwe
Angewandt wird LibeOffice Version 5.1.6.2
Re: Calc: Duplikate in Zellen entfernen
Hallo,
Vielleicht wäre es einfacher, die Duplikate vor oder während des Zusammenführens zu entfernen. Wie müssen wir uns den Tabellenaufbau vorstellen, der zu den Duplikaten führt?die Zelleninhalte der duplikatverursachenden Spalte in einer einzigen Zelle (hier B2) zusammengeführt habe
Gruß,
mikeleb
mikeleb
Re: Calc: Duplikate in Zellen entfernen
Guten Morgen.
Anbei eine kleine Beispieltabelle.
Mittels Makro werden die Formeln in Spalten C und D gegen die Echtwerte ausgetauscht und dann alle Zeilen entfernt, bis auf diejenigen, die in der Hilfspalte mit "0" gekennzeichnet sind (später werden die " // " durch Umbrüche ersetzt).
So verbleiben in diesem Fall die Zeilen 5 und 9, die als Duplikat den Müller (C5) und den Lühmann (C9) enthalten.
Gruß
Uwe
Anbei eine kleine Beispieltabelle.
Mittels Makro werden die Formeln in Spalten C und D gegen die Echtwerte ausgetauscht und dann alle Zeilen entfernt, bis auf diejenigen, die in der Hilfspalte mit "0" gekennzeichnet sind (später werden die " // " durch Umbrüche ersetzt).
So verbleiben in diesem Fall die Zeilen 5 und 9, die als Duplikat den Müller (C5) und den Lühmann (C9) enthalten.
Gruß
Uwe
- Dateianhänge
-
- Beispiel.ods
- (11.81 KiB) 187-mal heruntergeladen
Angewandt wird LibeOffice Version 5.1.6.2
Re: Calc: Duplikate in Zellen entfernen
Hallo,
momentan verknüpfst du also alle Namen der Spalte B, deren Spalte A denselben Wert haben, per Formel Schritt für Schritt zu einer Namensliste. Hinzu kommt eine Hilfsspalte, die dir anzeigt (1), welche Zeilen gelöscht werden können.
Dann werden die Formeln in Spalte C und D durch ihre Werte ersetzt und alle Zeilen mit dem Hilfsspaltenwert 1 gelöscht. Per Makro oder per Hand?
Im Ergebnis hast du dann eine Zeile mit Nr, Name, Namensliste und Hilfswert 0.
Danach werden die " // " durch Umbrüche (welcher Art?) ersetzt (manuell?, Makro?, suchen&ersetzen?) und ich vermute mal, die Spalte B gelöscht.
Aus meiner Sicht wäre es effektiver, das alles in ein einziges Makro zu stecken.
Wie sehen deine bisherigen Makros aus? Dann ließen sich die restlichen Funktionen mit einbauen.
momentan verknüpfst du also alle Namen der Spalte B, deren Spalte A denselben Wert haben, per Formel Schritt für Schritt zu einer Namensliste. Hinzu kommt eine Hilfsspalte, die dir anzeigt (1), welche Zeilen gelöscht werden können.
Dann werden die Formeln in Spalte C und D durch ihre Werte ersetzt und alle Zeilen mit dem Hilfsspaltenwert 1 gelöscht. Per Makro oder per Hand?
Im Ergebnis hast du dann eine Zeile mit Nr, Name, Namensliste und Hilfswert 0.
Danach werden die " // " durch Umbrüche (welcher Art?) ersetzt (manuell?, Makro?, suchen&ersetzen?) und ich vermute mal, die Spalte B gelöscht.
Aus meiner Sicht wäre es effektiver, das alles in ein einziges Makro zu stecken.
Wie sehen deine bisherigen Makros aus? Dann ließen sich die restlichen Funktionen mit einbauen.
Gruß,
mikeleb
mikeleb
Re: Calc: Duplikate in Zellen entfernen
Wie du es beschrieben hast, gehe ich vor. Alles per Makro.
mikeleb, vorhin habe ich DEINE Lösung in diesem Threat viewtopic.php?f=2&t=65377
gefunden. Kann ich das für mich weiterverwenden?
Gruß
Uwe
mikeleb, vorhin habe ich DEINE Lösung in diesem Threat viewtopic.php?f=2&t=65377
gefunden. Kann ich das für mich weiterverwenden?
Gruß
Uwe
Angewandt wird LibeOffice Version 5.1.6.2
Re: Calc: Duplikate in Zellen entfernen
Hallo,
natürlich darfst du es verwenden (dazu ist es ja da ).
Anbei eine Idee, wie du dein Ziel erreichen könntest.
natürlich darfst du es verwenden (dazu ist es ja da ).
Anbei eine Idee, wie du dein Ziel erreichen könntest.
- Dateianhänge
-
- Beispiel (1).ods
- (15.91 KiB) 202-mal heruntergeladen
Gruß,
mikeleb
mikeleb
Re: Calc: Duplikate in Zellen entfernen
Klasse. Das wird mir weiterhelfen.
Herzlichen Dank!
Gruß
Uwe
Herzlichen Dank!
Gruß
Uwe
Angewandt wird LibeOffice Version 5.1.6.2
Re: Calc: Duplikate in Zellen entfernen
Hallo mikeleb.
Eine Frage hätte ich noch:
Wie muss der Code abgeändert werden, wenn Spalte C noch die Vornamen enthalten würde und die dann in Spalte H in derselben Art ohne Duplikate abgebildet werden sollen?
Ich bin gespannt.
Gruß
Uwe
Eine Frage hätte ich noch:
Wie muss der Code abgeändert werden, wenn Spalte C noch die Vornamen enthalten würde und die dann in Spalte H in derselben Art ohne Duplikate abgebildet werden sollen?
Ich bin gespannt.
Gruß
Uwe
Angewandt wird LibeOffice Version 5.1.6.2
Re: Calc: Duplikate in Zellen entfernen
Hallo,
Kannst du noch ein bisschen mehr verraten, damit der Sinn der Übung klarer wird?
Unabhängig von den Nachnamen?wenn Spalte C noch die Vornamen enthalten würde und die dann in Spalte H in derselben Art ohne Duplikate abgebildet werden sollen
Kannst du noch ein bisschen mehr verraten, damit der Sinn der Übung klarer wird?
Gruß,
mikeleb
mikeleb
Re: Calc: Duplikate in Zellen entfernen
Hallo,
das es mich mal wieder gereizt hat, hier die (ursprüngliche) Lösung in Python, wodurch u. a. nun das Sortieren der Namen erheblich einfacher wird:
Die Python-Profis dürfen mir gern Vorschläge zur Optimierung machen ...
das es mich mal wieder gereizt hat, hier die (ursprüngliche) Lösung in Python, wodurch u. a. nun das Sortieren der Namen erheblich einfacher wird:
Code: Alles auswählen
def spalte_verbinden():
oDoc = XSCRIPTCONTEXT.getDocument()
oSheet = oDoc.Sheets.getByIndex(0)
oCells = oSheet.getCellRangeByName('A2:B10')
x=set(oCells.getDataArray())
#als Menge werden Duplikate entfernt
trenner=' // '
nur_nr=set()
fertig=[]
#Erfassen aller Nummern
for nr,name in x:
nur_nr.add(nr)
#Finden und Sortieren aller Namen zu jeder Nummer
for nr1 in nur_nr:
namen=[]
for nr,name in x:
if nr==nr1:
namen.append(name)
namen=sorted(namen)
fertig.append([nr1,' // '.join(namen)])
#Schreiben der neuen Daten in Spalte F und G
n=len(fertig)
oSheet.getCellRangeByPosition(5,1,6,n).setDataArray(tuple(fertig))
Gruß,
mikeleb
mikeleb
Re: Calc: Duplikate in Zellen entfernen
Hallo mikeleb.
Hintergrund ist, dass ich wiederkehrend Inhalte aus csv-Dateien in ein Tool importiere, die sich in der Spaltenstruktur und im Umfang unterscheiden, jedoch mindestens irgendwo eine duplikatverursachende Spalte beinhalten. Mit einer Vielzahl von Subs und deiner Lösung aus dem o. g. Threat sowie zwei Hilfstabellen und mehreren Hilfsspalten bin ich letztendlich zum Ziel gelangt. Dein Lösungsansatz hat mich natürlich neugierig gemacht und es stellt sich für mich die Frage, ob sich das nicht nur auf eine duplikatverursachende Spalte sondern für den gesamten Tabellenbereich anwenden ließe.
Wie gesagt hat sich mein Problem gelöst, wobei ich erahne, dass es auf Basis deiner Ideen sicherlich komfortabler zu lösen wäre.
Herzlichen Dank!
Gruß
Uwe
Hintergrund ist, dass ich wiederkehrend Inhalte aus csv-Dateien in ein Tool importiere, die sich in der Spaltenstruktur und im Umfang unterscheiden, jedoch mindestens irgendwo eine duplikatverursachende Spalte beinhalten. Mit einer Vielzahl von Subs und deiner Lösung aus dem o. g. Threat sowie zwei Hilfstabellen und mehreren Hilfsspalten bin ich letztendlich zum Ziel gelangt. Dein Lösungsansatz hat mich natürlich neugierig gemacht und es stellt sich für mich die Frage, ob sich das nicht nur auf eine duplikatverursachende Spalte sondern für den gesamten Tabellenbereich anwenden ließe.
Wie gesagt hat sich mein Problem gelöst, wobei ich erahne, dass es auf Basis deiner Ideen sicherlich komfortabler zu lösen wäre.
Herzlichen Dank!
Gruß
Uwe
Angewandt wird LibeOffice Version 5.1.6.2