Herbers Excel-Forum - das Archiv
verketten über FOR-Schleife
Betrifft: verketten über FOR-Schleife
von: Anton
Geschrieben am: 18.12.2006 17:02:21
Hallo Leute,
ich möchte texte verketten, die in einer anderen Tabelle in verschiedenen Spalten nebeneinander stehen.
Ziel ist es Klammern und Schrägstriche in einem bestimmten Rhythmus einzufügen.
1. Anfang: " ( "
2. Sieben Spalten nebeneinander durch " / " getrennt,
3a. wenn noch weitere Spalten belegt sind, dann: " ) ( "
3b. sonst: " ) "
wenn 3a: dann wieder holt sich 2. und 3.
Das hier ist mal mein bisheriger Code:
Sub F_zusammenbau_gekündigte()
'Gekündigte Abos auf neuem Blatt zusammenbauen
'Dim ZusSchräger As Byte
'Dim ZusKlammer As Byte
Dim letzteZ As Long
Dim WkSh_G As Worksheet
Dim WkSh_Z As Worksheet
Sheets.Add
ActiveSheet.Name = "zusammenbau_gekündigte"
Set WkSh_G = Worksheets("gekündigte") 'Tabelle mit den zu ersetzten Daten
Set WkSh_Z = Worksheets("zusammenbau_gekündigte") 'Zusammenbau-Tabelle: für Gekündigte
' For ZusKlammer = 1 To 7 Step 7
' For ZusSchräger = 1 To 6 Step 1
letzteZ = WkSh_G.UsedRange.Rows.Count
WkSh_Z.Cells(letzteZ, 1) = " ( " & WkSh_G.Cells(letzteZ, 1) & " / " & WkSh_G.Cells(letzteZ, 2) & _
" / " & WkSh_G.Cells(letzteZ, 3) & " / " & WkSh_G.Cells(letzteZ, 4) & " / " & WkSh_G.Cells(letzteZ, 5) & _
" / " & WkSh_G.Cells(letzteZ, 6) & " / " & WkSh_G.Cells(letzteZ, 7) & " ) "
'muster: ( 25 / 1471461.001 / Neue Umsatzsteuer-Praxis / / / / in Ansicht gekündigt )
Next ZusSchräger
Next ZusKlammer
Sheets("gekündigte").Select
End Sub
Ihr könnt am "FOR" & "NEXT..." schon sehen, dass ich mir einbilde das über eine Schleife lösen zu wollen.
Nur reichen meine Kenntnisse nicht aus.
Könnt Ihr mir bitte weiterhelfen?
Mein Dank geht schon jetzt in Eure Richtung.
Servus,
Anton
Betrifft: AW: verketten über FOR-Schleife
von: Fritz Hellbach
Geschrieben am: 18.12.2006 18:26:01
Hallo Anton,
Dein Code erscheint mir etwas wirr.
Also, Du möchtest ein Tabellenblatt auslesen und Felder zusammenführen
Z.B. so:
Sub xxx()
Dim letzteZ As Long
Dim WkSh_G As Worksheet
Dim WkSh_Z As Worksheet
Dim I&, J&, X&
Dim Slash$, Zusammen$
Dim LetzteZeileWKSH_G&
Sheets.Add
ActiveSheet.Name = "zusammenbau_gekündigte"
Set WkSh_G = Worksheets("gekündigte") 'Tabelle mit den zu ersetzten Daten
Set WkSh_Z = Worksheets("zusammenbau_gekündigte") 'Zusammenbau-Tabelle: für Gekündigte
LetzteZeileWKSH_G = WkSh_G.UsedRange.Rows.Count
Slash = " / "
X = 1 'Startzeile in WKSH_Z
For I = 2 To LetzteZeileWKSH_G
Zusammen = " ( "
For J = 1 To 7
Zusammen = Zusammen & WkSh_G.Cells(I, J)
Zusammen = Zusammen & Slash
Next
Zusammen = Replace(Zusammen, "/", ")", Len(Zusammen) - 3)
WkSh_Z.Cells(X, 1) = Zusammen
X = X + 1
Next
End Sub
Betrifft: AW: verketten über FOR-Schleife
von: Anton
Geschrieben am: 19.12.2006 10:58:06
Hallo Fritz,
jaja, Du hast recht.... was VBA angeht bin ich ein echtes Greenhorn.
Für Deinen Code bedanke ich deshalb sehr.
Es gibt da noch ein kleines Problem:
Nach dem "Replace" bleiben nur noch 4 Zeichen übrig.
Ich hab' schon in der Hilfe nachgeschlagen.... und keinen Fehler gefunden.
Kannst Du bitte nochmal drüber schauen?
Nochmals Danke,
Servus,
Anton
Betrifft: Problem gelöst
von: Anton
Geschrieben am: 19.12.2006 12:18:38
Hallo Fritz,
ich habe den Replace - Befehl ausgetauscht:
' Ergebnis = Replace(Zusammen, "/", ")", (Len(Zusammen) - 3)) 'Ersetze den Schrägstrich gegen KlammerZu
Ergebnis = Left(Zusammen, (Len(Zusammen) - 2))
Ergebnis = Ergebnis & DSatzEnde
'DSatzEnde ist der Klammer-Zu-String
Servus,
Anton