Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Verketten2 in Bereich Spalte für Spalte

Forumthread: Verketten2 in Bereich Spalte für Spalte

Verketten2 in Bereich Spalte für Spalte
08.02.2019 09:28:26
Jeanette
Hallo,
ich arbeite viel mit der Verketten2 Funktion, die ich als Makro in meine Arbeitsmappe eingebaut habe. Nun würde ich jedoch gerne nicht nur den Inhalt einer einzelnen Zeile oder Spalte, sondern den Inhalt eines größeren Bereichs (z.B. A1:C5) verketten. Im Prinzip funktioniert das mit der normalen verketten2 Funktion auch schon prima, bloß wird der Inhalt dabei Zeile für Zeile verkettet. Bei mir müssten die Inhalte jedoch Spalte für Spalte verkettet werden. Über Tipps wäre ich sehr dankbar!
Das ist mein bisheriges Verketten2 Makro:
Function Verketten2(ByRef bereich As Range, Trennzeichen As String) As String
Dim rng As Range
For Each rng In bereich
If rng  "" Then
Verketten2 = Verketten2 & rng & Trennzeichen
End If
Next
If Len(Verketten2) > 0 Then _
Verketten2 = Left(Verketten2, Len(Verketten2) - Len(Trennzeichen))
End Function
Grüße Jeanette
Anzeige

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Verketten2 in Bereich Spalte für Spalte
08.02.2019 10:23:29
Daniel
Hi
dann musst du selber mit einer Schleife für die Zeilen und einer Schleife für die Spalten arbeiten und diese richtig in einander schachteln:
Function Verketten3(ByRef bereich As Range, Trennzeichen As String) As String
Dim rng As Range
Dim z as Long
dim s as Long
For z = 1 to Bereich.rows.count
for s = 1 to Bereich.Columns.count
if Bereich(z, s)  "" then Verketten3 = Trennzeichen & Verketten3
next
next
If Len(Verketten3) > 0 Then _
Verketten3 = Mid(Verketten3, Len(Trennzeichen) + 1)
End Function
sollte die Reihenfolge der Anordnung immer noch nicht passen, dann einfach die Reihenfolge der FOR-Schleife austauschen.
dieses einfach Makro funktioniert jetzt aber nur mit einem einfachen rechteckigen Zellbereich.
Gruß Daniel
Anzeige
AW: Verketten2 in Bereich Spalte für Spalte
08.02.2019 10:25:07
UweD
Hallo

Tabelle1
 ABCDEFG
1AD14  A, B, C, D, F, 1, 2, 3, 4, 6
2B 2    
3CF36   

verwendete Formeln
Zelle Formel Bereich N/A
G1=Verketten2(A1: D3;", ")  
http://excel-inn.de/dateien/vba_beispiele/tabellenanzeige_in_html_addin.zip
http://Hajo-Excel.de/tools.htm
XHTML-Tabelle zur Darstellung in Foren, einschl. der neuen Funktionen ab Version 2007
Add-In-Version 25.14 einschl. 64 Bit


Function Verketten2(ByRef bereich As Range, Trennzeichen As String) As String
    Dim ZE, SP
    
        For Each SP In bereich.Columns
            For Each ZE In bereich.Rows
                If Intersect(SP, ZE) <> "" Then
                    Verketten2 = Verketten2 & Intersect(SP, ZE) & Trennzeichen
                End If
            Next
        Next
    
    If Len(Verketten2) > 0 Then _
    Verketten2 = Left(Verketten2, Len(Verketten2) - Len(Trennzeichen))

End Function

LG UweD
Anzeige
AW: Verketten2 in Bereich Spalte für Spalte
09.02.2019 09:59:51
Jeanette
Lieber Daniel, lieber Uwed,
wie cool, danke für eure Vorschläge! Ich bin immer etwas überfordert damit, wie schnell einem hier geholfen wird :) Ich probiere beide Lösungen heute Abend aus und sage euch dann Bescheid ob’s klappt.
Grüße,
Jeanette
AW: Verketten2 in Bereich Spalte für Spalte
10.02.2019 14:10:41
Jeanette
Lieber UweD, lieber Daniel,
vielen Dank euch beiden. Daniel, dein Makro hat bei mir komischerweise immer eine leere Zelle ergeben, vielleicht war da irgendwo ein Fehler drin? Uwed, dein Makro funktioniert perfekt! :) Ich habe jedoch Daniels Idee übernommen, der neuen Funktion einen neuen Namen zu geben "Verketten3", damit ich die Verketten2 Funktion bei Bedarf auch noch nutzen kann:
Function Verketten3(ByRef bereich As Range, Trennzeichen As String) As String
Dim ZE, SP
For Each SP In bereich.Columns
For Each ZE In bereich.Rows
If Intersect(SP, ZE)  "" Then
Verketten3 = Verketten3 & Intersect(SP, ZE) & Trennzeichen
End If
Next
Next
If Len(Verketten3) > 0 Then _
Verketten3 = Left(Verketten3, Len(Verketten3) - Len(Trennzeichen))
End Function
Also dickes Merci für eure Hilfe! :)
Viele Grüße,
Jeanette
Anzeige
AW: Verketten2 in Bereich Spalte für Spalte
10.02.2019 14:24:35
Daniel
Hi
ok da war noch ein kleiner Fehler in der Zentralen Zeile, so sollte es gehen:
 Function Verketten3(ByRef bereich As Range, Trennzeichen As String) As String
Dim rng As Range
Dim z As Long
Dim s As Long
For z = 1 To bereich.Rows.Count
For s = 1 To bereich.Columns.Count
If bereich(z, s)  "" Then Verketten3 = Verketten3 & Trennzeichen & bereich(z, s)
Next
Next
If Len(Verketten3) > 0 Then _
Verketten3 = Mid(Verketten3, Len(Trennzeichen) + 1)
End Function

Gruß Daniel
Anzeige
AW: Verketten2 in Bereich Spalte für Spalte
10.02.2019 14:48:09
Jeanette
Cool, ja perfekt so funktioniert es :)
Mercii!
Grüße, Jeanette
Ich hatte dir bereits ...
08.02.2019 14:26:00
Luc:-?
hier eine UDF empfohlen, Jeanette,
die wesentlich leistungsfähiger ist als die von dir präferierte. Aber das hattest du ja nicht verstanden. Und prompt kommt deine nächste Nachfrage…
Allerdings wdn hiermit die Zellen nur einer Zeile oder Spalte verkettet, nicht die Zellen eines MatrixBereichs zeilen- oder spaltenweise. Aber das könnte man evtl mit zusätzlichem INDEX hinbekommen.
Gruß, Luc :-?
Anzeige
AW: Ich hatte dir bereits ...
08.02.2019 15:12:10
Daniel
Naja Luc, du solltest vielleichte mal anfangen, die Dinge so zu erklären, dass der normale Excelanwender sie auch versteht.
Dann wirst du sicherlich erfolgreicher sein, bei deinem Bestreben die Anwendung der UDFs weiter zu verbreiten.
Gruß Daniel
dh die nachfrage wäre auch bei befolgung
08.02.2019 20:41:51
Daniel
deines Ratschlags notwendig gewesen Luc.
was soll jetzt also dein Beitrag?
Anzeige
AW: dh die nachfrage wäre auch bei befolgung
09.02.2019 09:51:27
Jeanette
Lieber Daniel, lieber Luc,
erstmal danke für die Antwort, ich freue mich echt von euch zu hören :)
Leider kann ich mit deinen Ratschlägen aber nicht so viel anfangen Luc. Ich hatte gehofft ich müsse vllt nur das Makro etwas umschreiben und dachte da hat vllt jemand einen Tipp.
Grüße,
Jeanette
Anzeige
;
Anzeige

Infobox / Tutorial

Verketten von Zellinhalten in Excel: So geht's


Schritt-für-Schritt-Anleitung

Um die Inhalte eines größeren Bereichs in Excel spaltenweise zu verketten, kannst du eine benutzerdefinierte Funktion (UDF) verwenden. Hier ist ein einfaches Beispiel für ein Makro:

  1. Öffne Excel und drücke ALT + F11, um den Visual Basic for Applications (VBA) Editor zu starten.
  2. Wähle im Menü "Einfügen" die Option "Modul" aus.
  3. Füge den folgenden Code in das Modul ein:
Function Verketten3(ByRef bereich As Range, Trennzeichen As String) As String
    Dim rng As Range
    Dim z As Long
    Dim s As Long
    For z = 1 To bereich.Rows.Count
        For s = 1 To bereich.Columns.Count
            If bereich(z, s) <> "" Then Verketten3 = Verketten3 & Trennzeichen & bereich(z, s)
        Next
    Next
    If Len(Verketten3) > 0 Then _
        Verketten3 = Mid(Verketten3, Len(Trennzeichen) + 1)
End Function
  1. Schließe den VBA-Editor und kehre zu deiner Excel-Tabelle zurück.
  2. Verwende die Funktion in einer Zelle, um einen Bereich zu verketten, z.B.:
    =Verketten3(A1:C5; ", ")

Häufige Fehler und Lösungen

  • Leere Zellen werden nicht korrekt angezeigt: Stelle sicher, dass in der If-Bedingung der Vergleichsoperator korrekt ist (<> "").
  • Makro funktioniert nicht: Überprüfe, ob die Makros in deinen Excel-Einstellungen aktiviert sind.
  • Falsche Verkettung: Die Reihenfolge der Schleifen kann das Ergebnis beeinflussen. Teste die Anordnung der Schleifen, falls die Ergebnisse nicht den Erwartungen entsprechen.

Alternative Methoden

  1. Verwendung von TEXTVERKETTEN (ab Excel 2016): Diese Funktion ermöglicht es dir, Text aus einem Zellbereich zu kombinieren. Beispiel:
    =TEXTVERKETTEN(", "; WAHR; A1:C5)
  2. Klassische Verkettung mit &: Wenn es sich um kleine Bereiche handelt, kannst du auch manuell die Inhalte verkettet:
    =A1 & ", " & B1 & ", " & C1

Praktische Beispiele

  • Beispiel 1: Um die Inhalte der Zellen A1 bis C3 zu verketten:

    =Verketten3(A1:C3, "; ")
  • Beispiel 2: Mit der TEXTVERKETTEN Funktion:

    =TEXTVERKETTEN(", "; WAHR; A1:C3)

Tipps für Profis

  • Experimentiere mit verschiedenen Trennzeichen, um die Lesbarkeit zu erhöhen.
  • Nutze Fehlerbehandlungsroutinen in VBA, um unerwartete Fehler zu vermeiden.
  • Halte deinen Code sauber und dokumentiere ihn, um die Wartung zu erleichtern.

FAQ: Häufige Fragen

1. Wie kann ich die Verkettung für leere Zellen ignorieren? Die oben genannte Funktion ignoriert leere Zellen automatisch, da sie in der If-Bedingung ausgeschlossen werden.

2. Kann ich das Makro anpassen, um nur bestimmte Spalten zu verketten? Ja, du kannst die Schleifen anpassen, um nur die gewünschten Spalten zu durchlaufen. Füge Bedingungen hinzu, um die entsprechenden Spalten zu filtern.

3. Funktioniert diese Methode in allen Excel-Versionen? Die VBA-Lösungen funktionieren in allen Versionen von Excel, die Makros unterstützen, während die TEXTVERKETTEN-Funktion nur in neueren Versionen (Excel 2016 und später) verfügbar ist.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige