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

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

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
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
Anzeige
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 :-?
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
Anzeige
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?
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

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige