Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1716to1720
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Dublikate in Zelle entfernen - PowerQuery - M

Dublikate in Zelle entfernen - PowerQuery - M
22.10.2019 15:48:50
Der
Hallo liebe Community,
ich habe in Excel-Powerquery eine Spalte mit x-Zeilen.
In einer Zelle dieser Spalte steht z.B. Apfel, Apfel, Birne.
Aus dieser Zelle sollen alle Duplikate entfernt werden und in einer neuen Spalte soll nur noch Apfel, Birne übrig bleiben.
Ich habe schon Lösungen mit VBA gefunden, welche jedoch anscheinend an der großen Anzahl von Wörtern gescheitert sind.
Die Tabelle kann bis zu 100.000 Zeilen haben. In einer Zelle können bis 11 Wörter stehen.
Ich freue mich über mögliche Lösungsvorschläge.

31
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: eine Möglichkeit wäre ...
22.10.2019 16:11:19
neopa
Hallo,
... in wie folgt, wenn die Daten Z.B. in Spalte A des Tabellenblattes Tabelle1 stehen und die Überschrift "Obst" haben und noch keine "Als Tabelle formatierte" Liste vorliegt so:
let
Quelle = Excel.CurrentWorkbook(){[Name="Tabelle1"]}[Content],
#"Geänderter Typ" = Table.TransformColumnTypes(Quelle,{{"Obst", type text}}),
#"Gruppierte Zeilen" = Table.Group(#"Geänderter Typ", {"Obst"}, {{"Anzahl", each Table.RowCount(Table.Distinct(_)), type number}}),
#"Entfernte Spalten" = Table.RemoveColumns(#"Gruppierte Zeilen",{"Anzahl"})
in
#"Entfernte Spalten"
Gruß Werner
.. , - ...
Anzeige
ich glaube nicht so gemeint...
22.10.2019 16:32:03
robert
Hi Werner,
denn als Ergebnis bleibt Apfel,Apfel,Birne stehen
Ich denke es sollte Apfel,Birne als Ergebnis sein-mein Verständnis aus der Anforderung.
Aber warten wir ab ;-)
Gruß
robert
..lies bitte die Textstellen mit "Zelle"...
22.10.2019 16:53:48
robert
Hi Werner,
zB. in einer Zelle können 11 Wörter stehen...
Gruß
robert
AW: ja, hatte ich überlesen, s.u. owT
22.10.2019 16:57:02
neopa
Gruß Werner
.. , - ...
AW: ich lese gerade noch ...
22.10.2019 16:55:10
neopa
Hallo @all,
... in einer Zelle können ja mehrere Obstsorten stehen, dann reicht mein Vorschlag natürlich so noch nicht :-(
Ich schau es mir dann nooh einmal an.
Gruß Werner
.. , - ...
Anzeige
AW: Dublikate in Zelle entfernen - PowerQuery - M
22.10.2019 16:50:36
Daniel
Hi
der folgende Code braucht für 100.000 Zeilen mit dem Testtext "aaa bbb ccc ddd aaa bbb ccc ddd" eine knappe sekunde auf meinem Rechner.
Sub test2()
Dim arr, i As Long
Dim t As Double
Dim TeilText
Dim Erg
Const TrKz As String = ", "
t = Timer
With ActiveSheet.UsedRange.Columns(1)
arr = .Value
For i = 1 To UBound(arr, 1)
Erg = TrKz
For Each TeilText In Split(arr(i, 1), TrKz)
If InStr(Erg, TrKz & TeilText & TrKz) = 0 Then Erg = Erg & TeilText & TrKz
Next
arr(i, 1) = Mid(Erg, Len(TrKz) + 1, Len(Erg) - Len(TrKz))
Next
.Value = arr
End With
Debug.Print Timer - t
End Sub

Anzeige
man könnte das auch in eine UDF aus lagern
22.10.2019 17:38:02
Daniel
und dann einfach als Formel in die Zellen schreiben:
Function RemoveDupInCells(byVal Txt as string, TrKz as string) as string
Dim TeilText
Dim Erg as String
Erg = TrKz
For Each TeilText In Split(Txt, TrKz)
If InStr(Erg, TrKz & TeilText & TrKz) = 0 Then Erg = Erg & TeilText & TrKz
Next
RemoveDupInCells = Mid(Erg, Len(TrKz) + 1, Len(Erg) - Len(TrKz))
End Function
und in der Zelle B1 dann: =RemoveDupInCells(A1;", ")
Gruß Daniel
AW: Dublikate in Zelle entfernen - PowerQuery - M
22.10.2019 17:11:12
Günther
Moin,
ich glaube nicht, dass das zielführend ist ...
Aber da mein Papierkorb schon viel zu voll ist, warte ich auf eine "saubere" Muster-xlsx. :-|
Mein Verdacht: In A2 steht: Apfel, Apfel, Birne und da soll später nur noch Apfel, Birne drin stehen. :-?
Gruß
Günther
Anzeige
leider nein, in A2 soll Apfel, Birne stehen...owT
22.10.2019 17:17:17
robert
Sorry, in E2...
22.10.2019 17:18:47
robert
AW: das muss dann ein PQ-Profi lösen owT
22.10.2019 17:49:51
neopa
Gruß Werner
.. , - ...
AW: Dublikate in Zelle entfernen - PowerQuery - M
22.10.2019 18:25:01
ChrisL
Hi
Ich kann es leider im Moment nicht testen, aber der Lösungsweg könnte wie folgt aussehen.
1 Apfel, Apfel, Birne
2 Baum, Apfel, Baum
Scheinbar gibt es die Funktion Text-in-Spalten auch in PQ.
https://support.office.com/en-us/article/split-a-column-of-text-power-query-5282d425-6dd0-46ca-95bf-8e0da9539662
Danach entpivotieren und es sollte so aussehen.
1 Apfel
1 Apfel
1 Birne
2 Baum
2 Apfel
2 Baum
Nun kannst du gruppieren und so die Duplikate raus nehmen.
Aus meiner Sicht ist die Kommagetrennte Darstellung fragwürdig. 100.000 Zeilen kann man sowieso nur auswerten und nicht durchlesen. Darum würde ich mir die Transformation zurück ins Ursprungsformat sparen (wieder pivotieren und die Spalten verketten).
cu
Chris
Anzeige
AW: Dublikate in Zelle entfernen - PowerQuery - M
22.10.2019 18:28:51
Günther
Moin,
diese Funktion(alität) gibt es nicht nur scheinbar sondern tatsächlich sogar von Anfang an und in unterschiedlichen Varianten ... ;-)
Gruß
Günther
AW: Dublikate in Zelle entfernen - PowerQuery - M
22.10.2019 18:36:26
ChrisL
Glück gehabt... zur Sicherheit schaue ich morgen trotzdem nochmal nach ;)
AW: Dublikate in Zelle entfernen - PowerQuery - M
22.10.2019 18:51:37
Günther
Ein Werbe-Spruch (70er Jahre?) eines Optikers aus Hamburg: "Mit Brille wär das nicht passiert…" ;-)
Userbild
Gruß
Günther
Anzeige
AW: dies hatte ich aber bereits so realisiert ...
22.10.2019 20:20:25
neopa
Hallo Chris, hallo Günther,
... wobei ich mittlerweile dahintergekommen bin, dass man Spaltenwerte trennen auch in Zeilen vornehmen kann und dadurch kein entpivotisierten mehr benötigt.
Doch das so erzielte Ergebnis in Spalte E entspricht nicht den Vorgaben des threaderstellers, auf was mich Robert zu Recht hingewiesen wird (auch wenn ich gleicher Meinung bin wie Chris, dass die Notwendigkeit dessen zumindest zu hinterfragen ist).
Die Möglichkeit des Pivotieren von Daten, finde ich in meiner 2016er Version (die auch der TE hat) nicht. Oder hab ich wieder die falsche Brille auf?
Folgendes hab ich noch versucht: zuerst noch eine Indexspalte eingeführt und nach der Datentrennung in Zeilen. die Entfernung der so entstandene Ergebnisspalte und der Indexspalte vorgenommen und anschließend nach der Indexspalte gruppiert.
Doch dann komme ich nicht weiter. Wie führe ich die Datenwerte der jeweiligen Index-Nummer wieder in der jeweiligen Zeile (kommagetrennt) zusammen?
Das würde mich jetzt schon interessieren, wie man dann in Excel 2016 realisiert.
Gruß Werner
.. , - ...
Anzeige
AW: vergessen, thread wieder offen zu stellen owT
22.10.2019 20:21:59
neopa
Gruß Werner
.. , - ...
AW: vergessen, thread wieder offen zu stellen owT
22.10.2019 23:55:39
Günther
[Zitat]Die Möglichkeit des Pivotieren von Daten, finde ich in meiner 2016er Version (die auch der TE hat) nicht. Oder hab ich wieder die falsche Brille auf?[/Zitat]
Ich habe vor vielen Jahren einmal Herrn Fielmann kennen gelernt. Er ist wirklich ein netter Mensch ... :-) Besuche vielleicht einmal eine seiner Filialen. Oder auch => http://www.excel-ist-sexy.de/zeilenweise-spalten-neu-ordnen/ (sehr weit unten ein kleiner Tipp.)
Gruß
Günther
Anzeige
AW: hab heut e Morgen meine Brille geputzt ...
23.10.2019 09:03:09
neopa
Hallo Günther,
... und nun auch "Spalte pivotieren" gefunden. Danke. :-)
Doch damit komme ich leider momentan auch nicht richtig weiter. Beigefügt ist meine Datei bis dahin:
https://www.herber.de/bbs/user/132678.xlsx
Wenn Du wegen des Crossposting des TE Dein ergänzenden Lösungsvorschlag hier nicht einstellen möchtest, bitte ich Dich mir diesen als Datei mir direkt zuzusenden. Denn auch der Tipp in CEF von Detlef hat mich nicht wirklich zum Ziel gebracht.
Meine Mailadresse bekommst Du, wenn Du in eine leere Standardexcelzelle folgende Formel schreibst: =WECHSELN("neopaCode";"Co";ZEICHEN(64)&"email.")
Gruß Werner
.. , - ...
Anzeige
AW: danke Dir, jetzt weiß ich wenigstens ...
23.10.2019 11:49:24
neopa
Hallo Robert,
,... woran ich bei Detlefs Lösung gescheitert war. Ich hatte gestern und eben auch eine Zeitlang nicht realisiert, dass ich meine Datentabelle im Gegensatz zu ihm mit "Obst" betitelt hatte.
Dann hatte ich jetzt auch noch eine Weile gebraucht, bis ich die richtige Funktion "extrahieren" gefunden hatte. Offensichtlich war meine Brille schon wieder schlierig. Nun hab ich aber die Lösung mit auch nur einer Abfrage. :-)
Vielen Dank Dir für die Einstellung Deiner Datei mit der Nachstellung von Detlefs Lösungsvorschlag.
Nun würde mich aber trotzdem noch interessieren, wie die Lösung mit Pivotsieren aussieht.
Gruß Werner
.. , - ...
AW: in dieser wird nicht "pivotisiert" ...
23.10.2019 15:08:22
neopa
Hallo Robert,
... sondern anstelle der zeilenweise Trennung der Spaltenwerte werden neue Spalten erzeugt und diese werden "entpivotisiert". Das aber hatte ich schon matte ich ja in meiner gestrigen Zwischenlösung von 17:11 und dann in meinem Beitrag von 20:20 darauf verwiesen, dass die Methode zeilenweise Trennung der Spaltenwerte günstiger ist.
Ich suche jetzt noch eine Lösung wo nach dem Gruppierung die Daten zunächst "pivotisiert" werden, wovon Chris schrieb und worauf Günther mich auf die auch in Excel 2016 vorhandene Funktionalität aufmerksam gemacht hat.
Gruß Werner
.. , - ...
AW: in dieser wird nicht "pivotisiert" ...
23.10.2019 16:10:05
ChrisL
Hi Werner
Nur weil du mich im Beitrag namentlich erwähnst, kurz eine Rückmeldung.
Ich hatte den Beitrag gestern freihändig ohne Excel geschrieben und dabei einfach angenommen, dass es, wenn es "entpivotieren" gibt, auch das Gegenstück "pivotieren" geben wird. Womöglich wäre hierfür aber die Standardfunktionalität "Pivot Tabelle" oder "Power Pivot" (nicht PQ) vorgesehen und damit wäre dann auch meine ursprüngliche Idee (pivotieren und verketten) gestorben.
cu
Chris
AW: das erklärt es ...und ...
23.10.2019 17:33:48
neopa
Hallo Chris,
... zunächst aber danke ich Dir für Deine Ausführungen.
Die Lösung von Detlef mit der "hinzugefügten Spalte" gefällt mir sehr gut, nachdem ich diese nun nachvollziehen konnte.
Dich und/oder Robert als PQ-Profi's möchte ich jetzt noch auf folgenden thread: https://www.herber.de/forum/archiv/1716to1720/t1719066.htm aufmerksam machen.
Ich hab mich daran eine ganze Weile versucht, bin aber zu keiner vernünftigen PQ-Lösung gekommen. Eine solche würde mich deshalb nun aber interessieren. Könnt ihr euch dessen mal annehmen?
Gruß Werner
.. , - ...
AW: das erklärt es ...und ...
23.10.2019 18:26:32
Günther
... mit der Problembeschreibung wird es gewiss auch schwer, mit PQ (oder auf anderen Wegen) zu einem Ergebnis zu kommen. Nach meiner Lesart müsste das Ergebnis für 1|a nicht 2 sondern 7 ergeben, denn die höchste Versionsnummer ist 2 und dort ist die Menge 7 angegeben. :-?
Gruß
Günther
AW: das erklärt es ...und ...
23.10.2019 18:33:22
ChrisL
habe im anderen Beitrag geantwortet.
2 ist gemäss meinem Verständnis schon richtig, weil die Tabelle Aufträge geht vor, egal welche Versionen im Archiv abgelegt sind.
AW: dies hatte ich aber bereits so realisiert ...
22.10.2019 23:35:34
Günther
@ Werner:
Ich habe die Erfahrung gemacht: Manchmal landet die Post auch im Briefkasten des Nachbarn...
Gruß
Günther

318 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige