Anzeige
Archiv - Navigation
1452to1456
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

Verkettung, Trennzeichen in Sammelspalte

Verkettung, Trennzeichen in Sammelspalte
28.10.2015 10:37:35
andrea
Hallo liebe Herberjaner,
ich suche eine Lösung um folgen Code zu verändern und dadurch mein Problem zu lösen. Die Sub habe ich aus Spotlight-Wissen und wurde dort von Georg Hoffmann als Lösung veröffentlicht.
Sub Verketten()
Dim Zeilen As Long
Dim Spalten As Long
Dim Summenspalte As Long
Summenspalte = 16
Zeilen = [a65536].End(xlUp).Row
For i = 1 To Zeilen
For j = 1 To Summenspalte - 1
Text = Text & Cells(i, j)
Next
Cells(i, Summenspalte) = Text
Text = ""
Next
das funktioniert wunderbar. Jedoch die Werte die in der "Summenspalte" ankommen
haben dieses Format (12345BerlinKreuzbergTorstraße1) ich benötige jedoch (12345/Berlin/Kreuzberg/Torstraße1/). Leider bekomme ich das nicht hin. Wäre für jede Hilfe dankbar.
LG
Andrea

18
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Verkettung, Trennzeichen in Sammelspalte
28.10.2015 11:07:57
Werner
Hallo Andrea,
Versuch mal
Cells(i, Summenspalte) = Text & "/"
Gruß Werner

AW: Verkettung, Trennzeichen in Sammelspalte
28.10.2015 12:14:56
Herbert
Hallo Andrea,
diese Zeile ("Zeilen = [a65536].End(xlUp).Row") kann in Excel 2010 u. U. falsche Ergebnisse bringen. Verwende dafür lieber den folgenden Befehl:
Zeilen = Cells(Rows.Count, 1).End(xlUp).Row
Servus

AW: Verkettung, Trennzeichen in Sammelspalte
28.10.2015 14:46:46
andrea
Hallo Werner und Herbert,
Herbert deinen Vorschlag habe ich geändert...danke
Werner, wenn ich = Text & "/" setzte erhalte ich folgende Ausgabe im der Summenspalte:
12345BerlinKreuzbergTorstraße/ brauche jedoch:
12345/Berlin/Kreuzberg/Torstraße1)
Gruß
Andrea

Anzeige
Verwende doch einfach eine UDF in 1er ...
28.10.2015 14:34:03
Luc:-?
…ZellFormel, Andrea,
wenn's dir in 1.Linie um das Ergebnis, nämlich das Verbinden der Inhalte aller Zellen eines bestimmten Bereichs geht. Hierzu findest du im hiesigen Archiv jede Menge Angebote unterschiedlichen Alters wie Verketten2, VerkettenA u.ä., die alle auf der vbFkt Join basieren (die neueste heißt VJoin und findet sich in ihrere aktuellen Version1.4 nur auf einigen hochgeladenen Dateien).
Dabei gehe ich davon aus, das max 15 SpaltenTexte miteinander verbunden wdn sollen, obwohl dein ErgebnisBsp offensichtlich nur 4 Komponenten hat. Die genannten UDFs würden aber idR den letzten / nicht setzen, da danach kein Wert mehr kommt, es sei denn, der letzte ist leer.
Die ZellFml kann dann wie üblich über alle betroffenen Zeilen gezogen wdn.
Ansonsten wären auch die dir bereits empfohlenen Änderungen ausreichend.
Gruß, Luc :-?
Besser informiert mit …

Anzeige
AW: Verkettung, Trennzeichen in Sammelspalte
28.10.2015 15:01:33
Rudi
Hallo,
Sub Verketten()
Dim DerText As String
Dim Zeilen As Long
Dim Summenspalte As Long
Dim i As Long, j As Long
Summenspalte = 16
Zeilen = Cells(Rows.Count, 1).End(xlUp).Row
For i = 1 To Zeilen
For j = 1 To Summenspalte - 1
DerText = DerText & "/" & Cells(i, j)
Next
Cells(i, Summenspalte) = Mid(DerText, 2)
DerText = ""
Next
End Sub

Gruß
Rudi

AW: Verkettung, Trennzeichen in Sammelspalte
28.10.2015 16:09:32
andrea
Hallo Rudi vorab Danke für deine Mühe...
Er gibt das gleiche Ergebnis aus wie meine Änderung
in Zeile 2´... deine Version ist auf jeden Fall eleganter.
1 For j = 3 To Summenspalte - 1
2 Text = Text & "/" & Cells(i, j)
Jedoch treten bei beiden Versionen folgende Probleme auf.

Die Tabelle hat Werte in Spalten (A-J) mit Überschriften.
Die Verketteten Werte die in Summenspalte 11(K) stehen
sollen sind jedoch nur die Spalten C:D:H:I und J
>
Probleme:
in der Summenspalte(K) werden auch ///// Zeichen gesetzt
auch wenn in den Spalten (A-J) keine Werte stehen. Da ja
nur die Werte aus C:D:H:I:J gebraucht werden, kommen die(/)
für alle anderen (A:B:E:F:G) noch dazu...
Wie muss ich deinen Code damit dieses Verhalten vermieden wird...
und nur die Spalten C:D:H:I:J abgefragt werden (die leeren Zellen
ignorierten werden).
LG
Andrea

Anzeige
AW: Verkettung, Trennzeichen in Sammelspalte
28.10.2015 16:18:59
Rudi
Hallo,
warum schreibst du das nicht gleich? Nur du weiß, wie deine Tabelle aussieht und wie das Ergebnis sein soll.
Sub Verketten()
Dim DerText As String
Dim Zeilen As Long
Dim Summenspalte As Long
Dim i As Long, j As Long
Summenspalte = 11
Zeilen = Cells(Rows.Count, 1).End(xlUp).Row
For i = 1 To Zeilen
For j = 3 To 4
If Cells(i, j)  "" Then DerText = DerText & "/" & Cells(i, j)
Next
For j = 8 To 10
If Cells(i, j)  "" Then DerText = DerText & "/" & Cells(i, j)
Next j
Cells(i, Summenspalte) = Mid(DerText, 2)
DerText = ""
Next
End Sub

Gruß
Rudi

Anzeige
AW: Verkettung, Trennzeichen in Sammelspalte
28.10.2015 17:28:01
andrea
Rudi, vielen vielen Dank,
das ist meisterlich. Wenn es deine Zeit und Muse erlaubt, hätte ich noch
eine Frage. Was muss ich tun, wenn ich den Wert aus Spalte(H), der sich in (8 To 10)befindet am Anfang(links) des Strings in der Summenspalte (K) benötige.
Gruß
Andrea

Ist Summenspalte die Ergebnisspalte der ...
28.10.2015 18:31:15
Luc:-?
…Kombinationen, Andrea,
und meinst du das, auf dein Bsp bezogen, jetzt so:
Kreuzberg/12345/Berlin/Torstraße 1
Hier wäre dann allerdings Spalte J leer (und die Torstraße liegt mW in Berlin-Mitte). Lösen könnte man das mit UDFs in ZellFmln auch so:
K2:=H2&"/"&VJoin(C2:D2;"/";-2)&"/"&VJoin(I2:J2;"/";-1)
Oder mit einem unzusammenhängenden Bereich so:
K3:=MxJoin((H3;C3:D3;I3:J3);"/")
Gruß, Luc :-?
Besser informiert mit …

Anzeige
AW: Verkettung, Trennzeichen in Sammelspalte
29.10.2015 09:46:23
Rudi
Hallo,
mal ganz primitiv:
Sub Verketten()
Dim DerText As String
Dim Zeilen As Long
Dim Summenspalte As Long
Dim i As Long, j As Long
Summenspalte = 11
Zeilen = Cells(Rows.Count, 1).End(xlUp).Row
For i = 1 To Zeilen
j = 8:  If Cells(i, j)  "" Then DerText = DerText & "/" & Cells(i, j)
j = 3:  If Cells(i, j)  "" Then DerText = DerText & "/" & Cells(i, j)
j = 4:  If Cells(i, j)  "" Then DerText = DerText & "/" & Cells(i, j)
j = 9:  If Cells(i, j)  "" Then DerText = DerText & "/" & Cells(i, j)
j = 10: If Cells(i, j)  "" Then DerText = DerText & "/" & Cells(i, j)
Cells(i, Summenspalte) = Mid(DerText, 2)
DerText = ""
Next i
End Sub

Gruß
Rudi

Anzeige
AW: Verkettung, Trennzeichen in Sammelspalte
30.10.2015 15:11:57
andrea
Hallo Rudi
hat wunderbar funktioniert...
wenn ich schon mal solch einen VB Giganten etwas fragen darf...da wäre noch etwas
dieser Code:
Sub SearchAndReplace()
Dim sFindInitial As String
Dim sReplaceInitial As String
Dim iLenInitial As Integer
Dim sFindFinal As String
Dim sReplaceFinal As String
Dim iLenFinal As Integer
Dim sTemp As String
Dim rCell As Range
sFindFinal = "ss"
sReplaceFinal = "ß"
For Each rCell In Selection
sTemp = rCell.Value
iLenInitial = Len(sFindInitial)
iLenFinal = Len(sFindFinal) 'de am Ende
If Right(sTemp, iLenFinal) = sFindFinal Then
Right(sTemp, iLenFinal) = sFindFinal Then
sTemp = Left(sTemp, Len(sTemp) - iLenFinal)
sTemp = sTemp & sReplaceFinal
rCell.Value = sTemp
End If
Next
Set rCell = Nothing
End Sub
Das Problem ist folgendes... wenn ich mehrere Zellen auswähle, sollte neben ss zu ß am Ende auch str. zu straße und strasse zu straße werden. Mit dem Code oben funktioniert das jedoch leider nicht so ganz. Weder Mehrfachauswahl noch Mehrfachänderung.
vorab Danke für deine Hilfe
LG
Andrea

Anzeige
'Danke' für deine Ignoranz, ...
30.10.2015 20:27:27
Luc:-?
…Andrea Zeidler;
von mir bekommst du garantiert keine Antwort mehr! :-[
Luc :-?

AW: 'Danke' für deine Ignoranz, ...
02.11.2015 15:13:48
andrea
Hallo Luc,
das tut mich leid, habe deine Antwort leider irgendwie übersehen,
sorry tut mir leid...
LG
Andrea

AW: 'Danke' für deine Ignoranz, ...
02.11.2015 15:13:49
andrea
Hallo Luc,
das tut mich leid, habe deine Antwort leider irgendwie übersehen,
sorry tut mir leid...
LG
Andrea

Um meine Fml müsstest du nur noch ...
03.11.2015 03:27:56
Luc:-?
…4× WECHSELN herumlegen, Andrea:
=WECHSELN(WECHSELN(WECHSELN(WECHSELN(…;"-Str.";"-Straße");"str.";"straße");"-Strasse"; "-Straße");"strasse";"straße")
In VBA kannst du stattdessen vbFkt Replace verwenden und ebenfalls 4× auf den ErgebnisText anwenden.
Luc :-?

Anzeige
AW: Um meine Fml müsstest du nur noch ...
03.11.2015 10:36:54
andrea
Hallo Luc,
vorab erstmal danke für deine Antwort,
den obigen code habe ich verworfen. Ich denke diese Konstruktion:
Dim strArr As Variant
Dim b As Byte
'Dim x As Variant
'x = InStrRev(strArr, "str.")
strArr = Array("str.", "strasse", """")
For Each x In Selection
Next
For b = 0 To UBound(strArr)
Selection.Replace strArr(b), "straße"
Next b
End Sub
löst das Problem zum Teil besser mit einem Array, wie und wo man jedoch das Verhalten dahingehend verändert, dass nur das Erste Auftreten von rechts der Zeichenketten (str. und strasse) dahingehend beeinflusst wird, dass nur in z.b. Zossenerstrasse also nur bei Zo...strasse in Zo...straße geändert wird verschließt sich mir. Vielleicht kannst du mir mit einem konkreten Beispiele weiterhelfen.
LG
Andrea

Anzeige
AW: Um meine Fml müsstest du nur noch ...
03.11.2015 13:16:07
andrea
Hallo Luc,
nochmals vielen Dank für deine Hilfe... hier die Lösung
x.Value = StrReverse(Replace(StrReverse(x.Value), strArr(b), StrReverse("straße"), 1, 1))
elegant könnte man sagen ohne viel Geschwafel und Gestottere...
LG
Andrea

Na, denn iss ja jut...! owT
03.11.2015 14:32:05
Luc:-?
:-?

305 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige