transponieren und verketten???
#1
Hallo liebe Community!

Ich habe folgendes Problem: In meiner Datei hab ich ca. 5.000 Zeilen und zwei Spalten.
Spalte A listet aktuell rund 5.000 Nummern auf, von denen aber nur ca 600 unterschiedlich sind.
Eine Zahl kann also mehrere Male vor kommen (oder auch nur ein mal).
Spalte B listet dann möglich "Zusatzinformationen" zu der in Spalte A genannten Zahl auf.

Also sieht das zb. so aus:
Zahl in "A"        Zusatzinfo in "B"
36030020           1A0008c
36030020           1A008d
36030030           1A007a
36030030           1A007b

Nun brauche ich allerdings alle Zahlen in "A" nur einmalig, also keine Duplikate, aber alle möglichen Zusatzinfos aus "B" zu den jeweiligen zahlen aus "A" dann "verkettet" in der Zelle in B (getrennt durch in Semikolon)

Würde in dem Fall dann also so aussehen sollen:
Zahl in "A"           Zusatzinfo in "B"
36030020           1A008C; 1A008d
36030030           1A007a; 1A007b

Ich kann das zwar manuell durch copy/paste und "verketten" machen, aber bei 5.000 Zeilen dauert das ja ewig!  Undecided
(Musterdatei im Anhang)

Gibt es da nicht eine einfachere Lösung? 

Vielen Dank schonmal!!!!!


Angehängte Dateien
.xlsx   musterdatei.xlsx (Größe: 10,29 KB / Downloads: 7)
Antworten Top
#2
Hallo,

ohne Kenntnis deiner Datei ein "recycelter" Code (ungeprüft)

Code:
Sub F_en()
Dim Ar, DD As Object
Set DD = CreateObject("Scripting.Dictionary")

Ar = cells(1,1).currentregion
For i = 2 To UBound(Ar)
    If DD.exists(Ar(i,1)) Then
        DD(Ar(i,1)) = DD(Ar(i,1)) & "; " & Ar(i,2)
    Else
        DD(Ar(i,1)) = Ar(i,2)
    End If
Next i
Debug.Print DD.Count
Cells(1, 5).Resize(DD.Count, 2) = Application.Transpose(Array(DD.keys, DD.items))
End Sub

mfg
Antworten Top
#3
Moin!
Ein 365-"Klassiker":
ABCDEF
1Ausgangsdatenso soll es am Ende aussehen:
2360300201A007a360300201A007a; 1A007b; 1A008c
3360300201A007b360300301A007a; 1A007b; 1A008c; 1A008d
4360300201A008c360300401A007a; 1A007b; 1A008c; 1A008d; 3A229; 3A232; 3C002; 3C003; 3C005; 6C004
5360300201A008d
6360300301A007aund so ist es mit RPP-Formeln
7360300301A007b360300201A007a; 1A007b; 1A008c; 1A008d
8360300301A008c360300301A007a; 1A007b; 1A008c; 1A008d
9360300301A008d360300401A007a; 1A007b; 1A008c; 1A008d; 3A229; 3A232; 3C002; 3C003; 3C005; 6C004
10360300401A007a
11360300401A007b
12360300401A008c
13360300401A008d
14360300403A229
15360300403A232
16360300403C002
17360300403C003
18360300403C005
19360300406C004

ZelleFormel
E7=EINDEUTIG(A2:A19)
F7=TEXTVERKETTEN("; ";1;FILTER(B$2:B$19;A$2:A$19=E7))
F8=TEXTVERKETTEN("; ";1;FILTER(B$2:B$19;A$2:A$19=E8))
F9=TEXTVERKETTEN("; ";1;FILTER(B$2:B$19;A$2:A$19=E9))

Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Antworten Top
#4
*freu*
so langsam freunde ich mich mit den neuen Funktionen, die LAMBDA() benötigen, an.

Hier muss nix mehr gezogen werden, es reichen 2 Formelzellen:

BCDEF
1so soll es am Ende aussehen:
21A007a360300201A007a; 1A007b; 1A008c
31A007b360300301A007a; 1A007b; 1A008c; 1A008d
41A008c360300401A007a; 1A007b; 1A008c; 1A008d; 3A229; 3A232; 3C002; 3C003; 3C005; 6C004
51A008d
61A007aund so ist es mit RPP-Formeln
71A007b360300201A007a; 1A007b; 1A008c; 1A008d
81A008c360300301A007a; 1A007b; 1A008c; 1A008d
91A008d360300401A007a; 1A007b; 1A008c; 1A008d; 3A229; 3A232; 3C002; 3C003; 3C005; 6C004
101A007a
111A007b
121A008c
131A008d
143A229
153A232
163C002
173C003
183C005
196C004

ZelleFormel
E7=EINDEUTIG(A2:A19)
F7=NACHZEILE(E7#;LAMBDA(a;TEXTVERKETTEN("; ";1;FILTER(B2:B19;A2:A19=a))))
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Antworten Top
#5
Hallo

Oder als Alternative die mittlerweile nicht mehr gern gesehene weil sie von mir stammt PQ Variante.


Angehängte Dateien
.xlsx   musterdatei_alexander.liedauer .xlsx (Größe: 18,29 KB / Downloads: 9)
Viele Grüße
PIVPQ
Antworten Top
#6
(10.05.2022, 17:09)PIVPQ schrieb: die mittlerweile nicht mehr gern gesehene weil sie von mir stammt PQ Variante.

Blödsinn! Wink
Das schöne an diesen Foren ist doch, dass man sich mal austoben darf!
Die wirklich(!) genialen Lösungen entstehen doch aufgrund des "Wettbewerbs" der Helfer.
Ich z.B. habe irgendwann mal den Schritt als Antworter in Foren gewagt, weil ich mich aus Spaß intensiv in VBA eingearbeitet habe.
Heute wirst Du von mir zu diesem Thema fast nichts mehr finden, weil ich es genial finde, was heutzutage (und natürlich auch früher) mit "simplen" Funktionen machbar ist.
Ich finde das gut und hoffe (wirklich!), dass ich durch Deine PQ-Lösungen einen erneuten Blick hinter den Horizont erhaschen darf!

So long und Gruß
Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
[-] Folgende(r) 1 Nutzer sagt Danke an RPP63 für diesen Beitrag:
  • PIVPQ
Antworten Top
#7
Moin,

@PIVPQ: Quatsch, ganz im Gegenteil: Deine PQ-Lösungen sind immer gerne gesehen!

Gruß
Microsoft Excel Expert · Microsoft Most Valuable Professional (MVP) :: 2011-2019 & 2020-2022 :: 10 Awards
https://de.excel-translator.de/translator :: Online Excel-Formel-Übersetzer :: Funktionen :: Fehlerwerte :: Argumente :: Tabellenbezeichner
Antworten Top
#8
Hi Ralf,

Zitat:so langsam freunde ich mich mit den neuen Funktionen, die LAMBDA() benötigen, an.

NACHZEILE ist auch eine wirklich starke Funktion (im Gegensatz zu manch anderen)!
Antworten Top
#9
Hi

Mal schauen. Ich denke PQ wird in Zukunft noch seltener Gebrauch finden durch die neuen Funktionen von Excel. 
Ich finde die Syntax von PQ auch etwas schwerer zu lernen als VBA oder Formeln. Hier reicht aber ein Zweizeiler.
Code:
let
    Quelle = Excel.CurrentWorkbook(){[Name="Tabelle1"]}[Content],
    Gruppe = Table.Group(#"Quelle", {"Ausgangsdaten"}, {{"B Alle", each Text.Combine(_[Spalte1], ","), type text}})
in
    Gruppe
Gruß Elex
[-] Folgende(r) 1 Nutzer sagt Danke an Elex für diesen Beitrag:
  • PIVPQ
Antworten Top
#10
Ok, Ergebnis sieht super aus... Aber woher kommen dann die Daten? Am Ende muss ich diese Formeln (???) ja dann in meine file einbauen und über ca 6.000 Zeilen ziehen...
Sorry, kenn mich da echt null aus...  05
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste