Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
864to868
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
864to868
864to868
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Suchen nach Zeichen und Zeilen verdoppeln

Suchen nach Zeichen und Zeilen verdoppeln
25.04.2007 13:27:00
Tom
Hallo !
ich hoffe Ihr könnt mir helfen. Ich habe folgendes Problem, ich habe eine Excel Tabelle mit folgender Struktur:
Feld1                        Feld2
Text1:Text2:Text3   TextTextTextText
In der Excel Tabelle sind natürlich mehrere von diesen Zeilen. Ich muss nun folgendes machen. In Feld 1 sind mehrere kurze Texte durch einen Doppelpunkt getrennt. Ich muss nun in einer Art Schleife zunächst erkennen ob in Feld 1 so ein Doppelpunkt vorhanden ist, wenn ja, dann soll Text2 in eine neue Zeile verschoben schoben, der Inhalt von Feld2 soll dann ebenfalls in das Feld2 der neuen Zeile verschoben werden. Das gleiche soll dann auch mit Text3 passieren, also ebenfalls eine neue Zeile. Die Anzahl der "Textschnipsel" in Feld1 kann von Zeile zu Zeile variieren.
Es sollte also folgendes herauskommen:
Feld1                        Feld2
Text1                        TextTextTextText
Text2                        TextTextTextText (dies ist eine neue Zeile)
Text3                        TextTextTextText (dies ist eine neue Zeile)
Lässt sich so etwas mit einem Makro erledigen ?
Bin Euch für jede Hilfe dankbar!
Viele Grüsse
Tom

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Suchen nach Zeichen und Zeilen verdoppeln
25.04.2007 14:23:00
IngGi
Hallo Tom,
Texte in den Spalten A und B des Tabellenblattes "Tabelle1", jeweils ab Zeile 1:

Sub test()
Dim rng As Range
Dim i As Integer
With Sheets("Tabelle1")
For Each rng In .Range("A1:A" & .Cells(Rows.Count, 1).End(xlUp).Row)
Do Until (i = 0 And InStr(1, rng, ":") = 0) Or _
(i > 0 And InStr(1, rng.Offset(i, 0), ":") = 0)
i = i + 1
rng.Offset(i, 0).EntireRow.Insert
rng.Offset(i, 1) = rng.Offset(0, 1)
rng.Offset(i, 0) = Right(rng.Offset(i - 1, 0), Len(rng.Offset(i - 1, 0)) _
- InStr(1, rng.Offset(i - 1, 0), ":"))
rng.Offset(i - 1, 0) = Left(rng.Offset(i - 1, 0), _
InStr(1, rng.Offset(i - 1, 0), ":") - 1)
Loop
Next 'rng
End With
End Sub

Gruß Ingolf

Anzeige
AW: Suchen nach Zeichen und Zeilen verdoppeln
25.04.2007 16:05:00
Tom
Hallo Ingolf,
vielen Dank für Deine super schnelle Hilfe !!!
Es läuft soweit eigentlich schon ganz gut, allerdings ergibt sich ab dem Durchlauf der 2. Zeile folgender Fehler, der Inhalt von Feld2 ist nicht korrekt, es wird immer der Inhalt von Feld2 aus der ersten Zeile eingefügt.
Ich versuche mal ein Beispiel:
Feld1                      Feld2
abc:def:ghi            Text Zeile1
jkl:mno:pqr            Text Zeile2
ergibt :
abc        Text in Zeile1
def        Text in Zeile1
ghi        Text in Zeile1
jkl         Text in Zeile2
mno        Text in Zeile1
pqr        Text in Zeile1
Viele Grüsse!
Tom

Anzeige
AW: Suchen nach Zeichen und Zeilen verdoppeln
25.04.2007 17:49:20
IngGi
Hallo Tom,
sorry, das kommt davon, wenn man mit zu stark vereinfachtem Datenmaterial testet. Kleine Ursache, große Wirkung. Hier nochmal der korrigierte Code im Ganzen:

Sub test()
Dim rng As Range
Dim i As Integer
With Sheets("Tabelle1")
For Each rng In .Range("A1:A" & .Cells(Rows.Count, 1).End(xlUp).Row)
Do Until (i = 0 And InStr(1, rng, ":") = 0) Or _
(i > 0 And InStr(1, rng.Offset(i, 0), ":") = 0)
i = i + 1
rng.Offset(i, 0).EntireRow.Insert
rng.Offset(i, 1) = rng.Offset(i - 1, 1)
rng.Offset(i, 0) = Right(rng.Offset(i - 1, 0), Len(rng.Offset(i - 1, 0)) _
- InStr(1, rng.Offset(i - 1, 0), ":"))
rng.Offset(i - 1, 0) = Left(rng.Offset(i - 1, 0), _
InStr(1, rng.Offset(i - 1, 0), ":") - 1)
Loop
Next 'rng
End With
End Sub

Gruß Ingolf

Anzeige
AW: Suchen nach Zeichen und Zeilen verdoppeln
25.04.2007 19:02:00
Tom
Hallo Ingolf,
yep, jetzt läufts genau richtig! Prima, da hast Du mir echt weitergeholfen.Vielen vielen Dank dafür !
Eine Frage hab ich aber noch ;-), wenn ich noch weitere Felder die in der entsprechenden Zeile stehen auch jeweils in die erzuegten Zeilen miteinfügen will, wie müsste ich Dein Script abändern?
Also z.B. steht im Moment ja nur in Feld2 jeweils ein Text(in meinem Beispiel Text Zeile1, oder Text Zeile 2), es kann aber auch sein, dass in Feld 3 und Feld 4 auch noch etwas steht, dies müsste dann ebenfalls in die erzeugten, neuen Zeilen mitkopiert werden.
Beispiel:
Feld1              Feld2               Feld3             Feld4
abc:def:ghi    Text Zeile1       NeuerText     auch neuer Text
Viele Grüsse
Tom

Anzeige
AW: Suchen nach Zeichen und Zeilen verdoppeln
26.04.2007 08:45:00
IngGi
Hallo Tom,
ich habe dir das Makro mal für insgesamt 4 Spalten angepasst. Zwischen den Doppelkreuzen musst du einfach für jede weitere Spalte eine weitere Codezeile einfügen und in dieser Codezeile den Spaltenindex immer um 1 erhöhen, so wie ich das für die zwei weiteren Spalten bereits gemacht habe.

Sub test()
Dim rng As Range
Dim i As Integer
With Sheets("Tabelle1")
For Each rng In .Range("A1:A" & .Cells(Rows.Count, 1).End(xlUp).Row)
Do Until (i = 0 And InStr(1, rng, ":") = 0) Or _
(i > 0 And InStr(1, rng.Offset(i, 0), ":") = 0)
i = i + 1
rng.Offset(i, 0).EntireRow.Insert
rng.Offset(i, 1) = rng.Offset(i - 1, 1)
rng.Offset(i, 2) = rng.Offset(i - 1, 2)
rng.Offset(i, 3) = rng.Offset(i - 1, 3)
rng.Offset(i, 0) = Right(rng.Offset(i - 1, 0), Len(rng.Offset(i - 1, 0)) _
- InStr(1, rng.Offset(i - 1, 0), ":"))
rng.Offset(i - 1, 0) = Left(rng.Offset(i - 1, 0), _
InStr(1, rng.Offset(i - 1, 0), ":") - 1)
Loop
Next 'rng
End With
End Sub

Gruß Ingolf

Anzeige
AW: Suchen nach Zeichen und Zeilen verdoppeln
26.04.2007 21:49:00
Tom
Hallo Ingolf !
Super, dann kann ich es jetzt einmal selbst weiterversuchen! Vielen Dank noch einmal !!!
Viele Grüsse
Tom

305 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige