Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1960to1964
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

Zeilen zusammenfügen, aber in einer Zelle Aufzählung

Zeilen zusammenfügen, aber in einer Zelle Aufzählung
07.02.2024 12:21:25
Agt_Romanoff
Hallo Community,

ich habe in einer Tabelle mehrere Zeilen, wo die Werte alle gleich sind, aber in einer Spalte stehen unterschiedliche Werte.
Ich würde jetzt gerne die Zeilen zusammenfassen und die Werte aus der Spalte, wo unterschiedliche Werte stehen als Aufzählung mit Semikolon getrennt.
Ich habe mal eine Beispieldatei gemacht, damit man es sich besser vorstellen kann.
Ich weiß nicht, ob es mit den Bordmitteln geht oder VBA für sowas benötigt.
https://www.herber.de/bbs/user/166852.xlsx
Vielen Dank schonmal.
MfG Romanoff

18
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zeilen zusammenfügen, aber in einer Zelle Aufzählung
07.02.2024 12:37:13
schauan
Hallöchen,

da könnte was in der Art gehen - wenn es nur um das Ergebnis darzustellen geht:

=TEXTVERKETTEN(";";;EINDEUTIG(A1:A30;FALSCH))

AW: Zeilen zusammenfügen, aber in einer Zelle Aufzählung
07.02.2024 18:26:59
daniel
Hi
in deiner Excelversion wird es mit Formeln schwierig.
das Problem ist, dass die "Duplikate" nicht aus ganzen Zellen bestehen, sondern aus Teilwerten von Zellen.
für die Holz-GmbH beispielsweise ist ja "Paris" ein Duplikat, aber nicht weil "Paris" als einzelner Zellwert mehrfach vorkommt, sondern weil Paris teil von "Berlin, Paris, Rom" ist.
für den gezeigten Fall ließe sich das sogar noch abfangen, aber problematisch wirds, wenn du für mehrere Zeilen des selben Herstellers noch mehrere solcher "Kombi-Werte" hast, beispielweise noch "Berlin, Rom", denn dass der Einzelwert "Rom" im Einzelwert "Berlin, Paris, Rom" schon drinsteckt, lässt sich noch ermitteln. Aber die Einzelwerte "Berlin, Rom" und "Berlin, Paris, Rom" geben keine Übereinstimmung, dh der Zellwert muss noch in seine Einzelteile zerlegt werden, und das ist mit Excel 2016 per Formel nicht machbar.

Hier müsste also VBA ran
ein möglicher Code wäre dieser:

Sub Umwandeln()

Dim arr
Dim dic As Object
Dim z As Long
Dim ID As String
Dim OrtsListe As String
Const TZ As String = ", "
Set dic = CreateObject("scripting.dictionary")


Dim Ort

With Sheets("Rohdaten").Cells(1, 1).CurrentRegion
arr = .Value

For z = 2 To UBound(arr)
ID = arr(z, 1)
OrtsListe = dic(ID)
For Each Ort In Split(arr(z, 4), TZ)
If InStr(TZ & OrtsListe & TZ, TZ & Ort & TZ) = 0 Then
If OrtsListe > "" Then OrtsListe = OrtsListe & TZ
OrtsListe = OrtsListe & Ort
End If
Next
dic(ID) = OrtsListe
Next

For z = 2 To UBound(arr, 1)
arr(z, 4) = dic(arr(z, 1))
Next

.Value = arr
.RemoveDuplicates 1, xlYes


End With
End Sub


ob PowerQuery das kann, weiß ich nicht, dazu fehlt mir die Erfahrung mit diesem Tool, denkbar wäre es.



Gruß Daniel
Anzeige
AW: Zeilen zusammenfügen, aber in einer Zelle Aufzählung
08.02.2024 08:55:15
Agt_Romanoff
Hallo Daniel,

das funktioniert schon sehr gut.
Ich habe aber leider das Problem das manchmal die Branche von zwei unterschiedlichen Unternehmen, welche untereinander stehen, die gleiche Branche ausgibt.
Dadurch wirf er mit dann die beiden Firmen zusammen in die obere Firmen mit allen Standorten von beiden Firmen.

Welche Codeteil müsste ich einfügen, damit er für die Unterscheidung der einzelnen Zeilen die Branche nicht mit berücksichtigt, aber beim zusammenziehen mit angibt.
https://www.herber.de/bbs/user/166889.xlsx

MfG Romanoff
Anzeige
AW: Zeilen zusammenfügen, aber in einer Zelle Aufzählung
08.02.2024 10:58:00
Daniel
In der Datei, die du zuerst gezeigt hast, war der Firmenname in Spalte A (=Spalte 1)
Daher habe ich den Code auch so geschrieben, dass er die Werte aus dieser Spalte als ID für das Dictionary und als Kriterium für das Duplikate-entfernen verwendet.
Wenn du jetzt deine Datei nachträglich änderst, musst du natürlich auch den Code entsprechen anpassen und hierfür dann die Passende Spalte einsetzen.

Das ist dein Job, ich kann ja nicht jedesmal dabei sein, wenn du die Spaltenanordnung deiner Tabelle änderst, daher musst du das machen. Ich beziehe mich immer auf die Beispieldatei der Eingangsfrage.

Probier's also mal selber, finde heraus was die Spaltenabgaben im Code sind und ändere diese
Es sind nur drei Stellen im Code.

Oder ist es so, dass die Anordnung deiner Tabelle Ständig wechselt und man daher im Code gar nicht auf feste Spalten gehen kann sondern diese aus den Überschriften ableiten muss?


Gruß Daniel
Anzeige
AW: Zeilen zusammenfügen, aber in einer Zelle Aufzählung
08.02.2024 11:45:14
Agt_Romanoff
Ich hatte mir das ganz schon angeschaut. (Achtung bis zu Ende lesen)
Alles was z=2 ist, bezieht sich auf die Zeile, da die Überschriften nicht berücksichtigt werden sollen.
Alles was (z, 4) ist bezieht sich auf die Ortsbezeichnungen und ist für meine Problematik irrelevant.
Also kann es sich nur noch um die Zeilen handeln mit (arr, 1) oder (z,1).
Da habe ich die 3 Stellen wo an der zweiten Stelle 1 steht, aber bin nicht auf den grünen Zweig gekommen.
Das hätte ich eigentlich geschrieben.

Aber ich hatte das RemoveDuplicates 1 übersehen. Das hatte ich auf 2 geändert und dann noch
ID = arr(z, 2) &
arr(z, 4) = dic(arr(z, 2))
in der zweiten For Next und dann hat es funktioniert.

Danke dir für alles.
Anzeige
AW: Zeilen zusammenfügen, aber in einer Zelle Aufzählung
08.02.2024 12:54:17
daniel
Hi
super, geht doch.
die 1 in Ubound(arr, 1) war jetzt nicht gemeint, das hat hier einen andere Bedeutung und muss bleiben.
hier sagt die 1 aus, dass ich vom mehrdimensionalen Array arr die Anzahl der Werte der ersten Dimension (Zeilen) haben möchte.
das solltest du nicht auf 2 abändern.
Gruß Daniel

ps (wobei ich mich immer noch frage, warum die Spaltenanordnung sich plötzlich geändert hat)
AW: Zeilen zusammenfügen, aber in einer Zelle Aufzählung
07.02.2024 12:48:12
Agt_Romanoff
Vielen Dank dafür.
Ich hatte die Funktion auch schon gesehen, aber
1. Benötigt man dafür Office365
2. Ist die Zeilenanzahl, welche zusammengefasst werde, unterschiedlich.

MfG Romanoff
Anzeige
Ohne xl365...
07.02.2024 12:51:04
{Boris}
Hi,

...wird das nicht gehen. Zudem liefert das nicht das Ergebnis, was in dem 2. Blatt dargestellt ist.
Aber natürlich schreit die Aufgabe formelmäßig nach xl365.

Ein Beispiel im selben Blatt wie die Rohdaten:

F2:
=EINDEUTIG(A2:C16)

I2:
=TEXTVERKETTEN(",";;EINDEUTIG(MTRANS(GLÄTTEN(TEXTTEILEN(TEXTVERKETTEN(",";;MTRANS(FILTER(D$2:D$16;(A$2:A$16=F2)*(B$2:B$16=G2)*(C$2:C$16=H2))));",")))))
und runterkopieren.

Aber am Ende wird das für die angegebene Excelversion sicher auf PQ oder VBA hinauslaufen. Da kommt bestimmt noch ein Vorschlag.

VG, Boris
Anzeige
AW: Ohne xl365...
07.02.2024 15:20:51
schauan
Hallöchen,

mit PQ wäre das eine Lösung

let
Quelle = Excel.CurrentWorkbook(){[Name="Tabelle1"]}[Content],
#"Gruppierte Zeilen" = Table.Group(Quelle, {"Firma", "Unternehmensform", "Branche"}, {"Alle Orte", each Text.Combine(_[Standorte],", "),type text})
in
#"Gruppierte Zeilen"

Übernimm alle Daten mit PQ, gehe dann in den bei Abfrage in den erweiterten Editor.
Dort stehen wahrscheinlich zwei Zeilen mit "Geänderter Typ". Ersetze das mit den beiden "Gruppierte Zeilen"
Nur der Form halber...
07.02.2024 17:12:52
{Boris}
...braucht es für die Formel in I2 natürlich kein MTRANS.

Es reicht:
I2:
=TEXTVERKETTEN(",";;EINDEUTIG(GLÄTTEN(TEXTTEILEN(TEXTVERKETTEN(",";;FILTER(D$2:D$16;(A$2:A$16=F2)*(B$2:B$16=G2)*(C$2:C$16=H2)));","));1))
und runterkopieren.

VG, Boris
Anzeige
AW: so aber noch nicht ganz korrekt ...
07.02.2024 15:49:36
neopa C
Hallo André,

... um die die Duplikate von "Rom" und "Paris" noch zu eliminieren, müßte Dein M-Code noch ergänzt werden.
Und zwar z.B. indem die Daten von "Standorte" zuvor (für ",") getrennt (in Zeilen!) werden und dann für alle 4 Spalten die Duplikate entfernt werden und danach Deine vorgeschlagene Gruppierung mit dem anschließenden Textverketten von "Standorte" vorgenommen wird.

Den erweiterten M-Code dafür stelle bitte noch ein.

Gruß Werner
.. , - ...
Genau wegen der Duplikate...
07.02.2024 16:03:04
{Boris}
Hi Werner,

...ist übrigens auch die Formel (für 365) etwas umfangreicher ;-)

VG, Boris
AW: ja und deswegen ...
07.02.2024 16:13:17
neopa C
Hallo Boris,

... hatte ich meine Versuche für eine vertretbare Formellösung für XL2016 schnell aufgegeben.
Aber mit PQ ist es in XL2016 lösbar aber mE nur mit direkten Einsatz von M-Code analog der von André.

Gruß Werner
.. , - ...
Anzeige
AW: und dafür ...
07.02.2024 19:46:20
neopa C
Hallo Boris,

... ist der M-Code noch umfangreicher aber dafür in XL2016 einsetzbar.

Da diesen schauan aus welchen Grund auch immer ihn nicht einstellt, hol ich das hier nach:

 let

Quelle = Excel.CurrentWorkbook(){[Name="Tabelle1"]}[Content],
Standorte_aufteilen = Table.ExpandListColumn(Table.TransformColumns(Quelle, {{"Standorte", Splitter.SplitTextByDelimiter(", ", QuoteStyle.Csv), let itemType = (type nullable text) meta [Serialized.Text = true] in type {itemType}}}), "Standorte"),
Duplikate_entfernen = Table.Distinct(Standorte_aufteilen),
Auswertung = Table.Group(Duplikate_entfernen, {"Firma", "Unternehmensform", "Branche"}, {"Alle Orte", each Text.Combine(_[Standorte],", "),type text})
in
Auswertung


Gruß Werner
.. , - ...
Anzeige
AW: und dafür ...
07.02.2024 20:18:00
schauan
Hallo werner,

Danke für die Korrektur, hatte das gar nicht bemerkt.

Der schauan war mal eine Weile offline bzw. nur am Handy, und zuweilen übersieht man hier auch die eine oder andere Antwort wenn man nicht
nebenher den Archivthread offen hat - was gerade, aber nicht nur, am Handy schnell mal passsiert :-( Das war zwar, wenn ich mich recht entsinne, vor gut 20 Jahren auch schon so, aber da gab's zumindest das Problem mit den Smartphones noch nicht :-)






AW: nun ...
09.02.2024 10:16:12
neopa C
Hallo Andre,

... mir war gestern aufgefallen, daß Du nicht nur in CEF sondern zumindest zuletzt auch hier im Forum sehr aktiv warst.
Gehörst Du denn jetzt auch schon zum sogenannten "Unruhestand" ;-) oder ?

Gruß Werner
.. , - ...
AW: nun ...
09.02.2024 13:42:05
schauan
Hi Werner,

ja, seit dem 1.1. bin ich nun wirklich "Arbeitslos" :-) auch wenn mein Rentenbeginn schon eher war. Ich hatte mir aber als Minijobber ein regelmäßiges (Zusatz-) Einkommen gesichert :-) Zu Corona-Zeiten war ja immer mal Unterstützung im Gesundheitswesen gesucht und blutrünstig wie ich bin, hab ich als Fahrer angefangen und Laborproben von Arztpraxen in ein Labor gebracht. Das ist nun zum Jahresende ausgelaufen :-(

Da schaue ich nun wieder etwas abseits vom CEF nach Excel-Aufgaben. Hier bei Herber bin ich ja schon vor über 22 Jahren eingestiegen :-) Anfangs als andre, 2004 hab ich dann auf schauan umgeswitcht. Da finde ich mich auch noch im Archiv, ab dem 20.03.2004. Hier war ich noch bis 2007 sehr aktiv, dann bin ich in Berti's CF gewechselt und habe hier nur noch wenig gemacht. Zwischen 2014 und 2024 steht dann nur ein Beitrag von mir hier :-(

Ich hab da noch alte Antworter- bzw. Beitragslisten aus 2002 gefunden, da stand ich ich schon unter den top 10 drin, mein Einstieg muss also noch einige Zeit vor 2002 gewesen sein. Habe in meinem alten Archiv neben anderen Dateien auch noch meinen html-Signaturcode gefunden - siehe hier unten. Da Hans glaube seit ca. 2002 nichts an der Ablagestruktur der uploads geändert hat, funktionieren die Links auf hochgeladene Dateien immer noch. Kann auch sein, dass erst seit da die Uploads möglich waren.

Tut sich ja auch immer mal was. Es gab z.B. mal einen Plaudern-Bereich - aber dass der wieder abgeschafft wurde, war auch ok. Der Ton dort von einigen usern war nicht gerade vom feinsten. Beiträge wurden früher in einen gesonderte Forenbereich geschoben und konnten nicht mehr beantwortet werden - ich schlug damals die Sache mit dem Status unbeantwortet vor (vielleicht auch ein paar andere). Die Hitlisten wurden dann auch abgeschafft - auch ok. Wir haben die Beitragszähler im CEF ja auch unterdrückt, um den "Hithuntern" etwas entgegen zu wirken ;-)

Und wer weiß, was noch alles war - ich muss jetzt erst mal Kaffee kochen, meine Frau kommt gleich von der Arbeit :-)

Aber keine Angst, das kommt sicher nicht nochmal :-)


Grüße








AW: ja, ja die Jahre ...
09.02.2024 19:53:29
neopa C
Hallo André,

... 2002 warst Du also hier schon aktiv. Damals glaubte ich gerade zu wissen, wie man Excel schreibt. Mein ersten XL-Gehversuch hatte ich ab 2004 im Spotlight Forum unternommen. Etwas später dann in OEF und nach dessen Ende war ich einige Jahre im OLF tätig.

Deinen letzten Satz kann man übrigens sehr verschieden interpretieren. ;-)

Gruß Werner
.. , - ...





Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige