Wie kann ich gefüllte Zellen einer Zeile automatisiert verketten?

1 Antwort

Vom Fragesteller als hilfreich ausgezeichnet

Hallo,

falls du auf die Farbe verzichten kannst, kannst du das direkt so erreichen:

  • =WECHSELN(WENN(B2<>"";"|"&B$1&": "&B2;"")&WENN(C2<>"";"|"&C$1&": "&C2;"")&WENN(D2<>"";"|"&D$1&": "&D2;"")&WENN(E2<>"";"|"&E$1&": "&E2;"")&WENN(F2<>"";"|"&F$1&": "&F2;"");"|";"";1)

Über die Wenn() werden die Einträge jeweils zusammengesetzt und per & verkettet, anschließend entfernt Wechseln() das "|" am Anfang.

Falls die Färbung erhalten bleiben werden soll, müsste man VBA bemühen.

soneugierig83 
Fragesteller
 01.03.2022, 14:40

Danke DanKirpan. Die Farben sind nicht wichtig, das habe ich nur zur besseren Übersicht so dargestellt.

Deine Formel funktoniert zwar, aber bei mehreren hundert Spalten leider sehr aufwendig. Könnte man anstatt die Zellen einzeln zu benennen auch einen gesamten Bereich auswählen? Also z.b. B2:F2 anstatt B2, C2, D2, E2, F2...

0
DanKirpan  01.03.2022, 15:13
@soneugierig83

Oh hatte vorhin Zeilen statt Spalten gelesen, dann muss es wohl doch VBA sein:

Sub alleZusammen()
Dim lZei As Long, lSpa As Long
Dim z As Long, s As Long
Dim zus As String


With ActiveSheet
    lZei = .Range("A" & .Rows.Count).End(xlUp).Row
    lSpa = .Cells(1, .Columns.Count).End(xlToLeft).Column
    For z = 2 To lZei
        zus = ""
        For s = 2 To lSpa
            If .Cells(z, s).Value <> "" Then
                zus = zus & "|" & .Cells(1, s).Value & ": " & .Cells(z, s).Value
            End If
        Next s
        .Cells(z, lSpa + 1) = Right(zus, Len(zus) - 1)
    Next z
End With

End Sub

Ab Version Excel 2019 gäbe es Textkette() zum Verketten von Bereichen, wobei ich nicht ganz sicher bin ob das mit den Wenn() zusammen funktionieren würde. Ältere Versionen verstehen Bereiche beim verketten leider überhaupt nicht.

1
soneugierig83 
Fragesteller
 01.03.2022, 16:01
@DanKirpan

Bei dem Beispiel oben klappt es wunderbar, danke Dir

Aber in meiner Datei mit den vielen Spalten wird diese Zeile als Fehler markiert.

.Cells(z, lSpa + 1) = Right(zus, Len(zus) - 1)

Keine Ahnung, was ich da korrigieren könnte. Darf ich dir meine eigentliche Datei mal per Mail zusenden?

0
DanKirpan  01.03.2022, 16:07
@soneugierig83

Spontan würde ich darauf tippen eine Zeile der Tabelle ist leer, schicke dir dafür eine FA

0