Clever-Excel-Forum

Normale Version: Formel zum Zusammenführen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo zusammen Smile

ich habe folgendes Problem:
Die Tabelle, die ich als Anlage angehängt habe, bekomme ich so aus einem Programm. Die Servicearbeiten bzw. gesetzliche Untersuchungen werden jeweils einzeln angezeigt, sodass ich Arbeiten für ein Kennzeichen in mehreren Zeilen habe. Ich möchte jetzt eine Formel erstellen, damit ich all die Arbeiten für ein Fahrzeug in einer Zelle der Spalte I habe (so wie in Zeile 3).

Ich habe schon viel rumgebastelt, mit SVERWEIS, WENN-Formel und VERKETTEN, aber das wollte nicht so ganz, wie ich das gerne hätte.

Vielleicht habt ihr ja eine Idee Smile

Lieben Gruß
Michelle
Michelle,

suche mal nach "verketten2".
Naja, so verbinde ich zwar die Zellen miteinander, habe aber keinen Bezug auf das Kennzeichen.
Die Verkettung soll ja nur dann entstehen, wenn die Kennzeichen zueinander passen. Und da das eine längere Liste sein wird, muss ich die Formel schon runterkopieren können.
heje excelfreunde, michelle,

vorschlag: verwende ein zweites tabellenblatt (Zusammenfassung). das vorhandene als datenpool, aus welchem dann alle relevanten daten und die daraus resultierenden (gewünschten) verkettungen im tabellenblatt (Zusammenfassung) generiert werden...
Hallo,

mit VBA wäre dies relativ einfach ("Dictionary") zu lösen. Kommt das infrage?

mfg
(06.10.2017, 13:54)Fennek schrieb: [ -> ]Hallo,

mit VBA wäre dies relativ einfach ("Dictionary") zu lösen. Kommt das infrage?

mfg

Guten Morgen,

ich habe leider noch nie mit VBA gearbeitet. Aber ich bin immer offen für neues :19:

LG
heje excelfreunde, michelle,

dein anforderungsprofil ist zu ungenau. die frage, die du dir stellen solltest, ist: was will ich erreichen?
gehe einmal von deinem ziel aus und überlege, wie und/oder was du anhand deiner Daten darstellen oder verwenden möchtest.

siehe angehängte Datei...
Hallo,

hier der Ansatz mit VBA:

Die Datei muss als xlsm abgespeichert werden!

Öffnen des VBA-Editors mit alt-F11, anlegen eines Moduls im Menü "Einfügen -> Modul".

Den Code mit copy/paste in das Fenster einfügen.

Es wird einmalig ein zweites Blatt angelegt. Die Auswertung erfolgt nur für die Spalten G-I, das Ergebnis wird in das neue Blatt geschrieben.

Schaun wir mal, ob du damitzurecht kommst.


Code:
Sub iFen()

If Sheets.Count = 1 Then Sheets.Add 'legt Sheet "Tabelle2" an, falls es noch nicht existiert

With CreateObject("Scripting.Dictionary")
lr = Tabelle1.Cells(Rows.Count, "G").End(xlUp).Row
Ar = Range("G3:I" & lr)
For i = 1 To UBound(Ar)
   If Ar(i, 3) <> 0 Then
       Tx = Ar(i, 2) & vbLf & Ar(i, 3) 'falls Spalte I nicht leer wird spalte H und I zusammengefast
   Else
       Tx = Ar(i, 2)
   End If
   If .exists(Ar(i, 1)) Then
       .Item(Ar(i, 1)) = .Item(Ar(i, 1)) & "|" & Tx
   Else
       .Item(Ar(i, 1)) = Tx
   End If
Next i
'Ausgabe in Tabelle2
Tabelle2.Range("A2").Resize(.Count, 2) = Application.Transpose(Array(.keys, .items))
End With
End Sub


mfg