Seite 1 von 1
Calc: Duplikate in Zellen entfernen
Verfasst: Sa, 04.11.2017 23:51
von retuwe61
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
Re: Calc: Duplikate in Zellen entfernen
Verfasst: So, 05.11.2017 17:41
von lorbass
retuwe61 hat geschrieben: ↑Sa, 04.11.2017 23:51
Ist es mit einen Makro möglich, den doppelten Eintrag (in diesem Fall "Meier") zu 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
Verfasst: So, 05.11.2017 18:51
von retuwe61
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
Re: Calc: Duplikate in Zellen entfernen
Verfasst: Mo, 06.11.2017 07:37
von mikeleb
Hallo,
die Zelleninhalte der duplikatverursachenden Spalte in einer einzigen Zelle (hier B2) zusammengeführt habe
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?
Re: Calc: Duplikate in Zellen entfernen
Verfasst: Mo, 06.11.2017 10:30
von retuwe61
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
Re: Calc: Duplikate in Zellen entfernen
Verfasst: Mo, 06.11.2017 18:24
von mikeleb
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.
Re: Calc: Duplikate in Zellen entfernen
Verfasst: Mo, 06.11.2017 20:44
von retuwe61
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
Re: Calc: Duplikate in Zellen entfernen
Verfasst: Mo, 06.11.2017 21:14
von mikeleb
Hallo,
natürlich darfst du es verwenden (dazu ist es ja da
).
Anbei eine Idee, wie du dein Ziel erreichen könntest.
Re: Calc: Duplikate in Zellen entfernen
Verfasst: Mo, 06.11.2017 22:05
von retuwe61
Klasse. Das wird mir weiterhelfen.
Herzlichen Dank!
Gruß
Uwe
Re: Calc: Duplikate in Zellen entfernen
Verfasst: Mo, 06.11.2017 22:48
von retuwe61
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
Re: Calc: Duplikate in Zellen entfernen
Verfasst: Di, 07.11.2017 08:00
von mikeleb
Hallo,
wenn Spalte C noch die Vornamen enthalten würde und die dann in Spalte H in derselben Art ohne Duplikate abgebildet werden sollen
Unabhängig von den Nachnamen?
Kannst du noch ein bisschen mehr verraten, damit der Sinn der Übung klarer wird?
Re: Calc: Duplikate in Zellen entfernen
Verfasst: Di, 07.11.2017 21:09
von mikeleb
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:
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))
Die Python-Profis dürfen mir gern Vorschläge zur Optimierung machen ...
Re: Calc: Duplikate in Zellen entfernen
Verfasst: Mi, 08.11.2017 07:00
von retuwe61
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