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

kombinieren von 2 Split-Makros

kombinieren von 2 Split-Makros
14.12.2006 17:38:41
2
Hallo Leute,
ich habe zwei Makros, die einen Datensatz splitten sollen.
Beide funktionieren sehr gut. (Dem Author nochmals herzlichen Dank dafür)
Meine Frage:
Wie muss ich die beiden schachteln, damit die datensätze nicht vermischt werden?
Hier der Code:

Sub Datensätze_teilen_klammer()
Dim LetzteZeile1 As Long
Dim aktiveZeile As Long
Dim Satz, SplitSatz, S, Zei
'Start-bedingung
LetzteZeile1 = ActiveSheet.UsedRange.Rows.Count
For aktiveZeile = LetzteZeile1 To 1 Step -1
If (Cells(aktiveZeile, 1).Value) <> "" Then
'Datensätze (Spalte A) anhand von " ) ( " in verschiedene Spalten trennen
'For Zei = 1 To Range("A65536").End(xlUp).Row
Satz = Mid(Cells(aktiveZeile, 1), 3)
Satz = Left(Satz, Len(Satz) - 2)
SplitSatz = Split(Satz, " ) ( ")
If UBound(SplitSatz) > 255 Then Msgbox "Houston, wir hamm das watt, wann kommt XL2007?"
For S = 0 To UBound(SplitSatz)
Cells(aktiveZeile, S + 1) = SplitSatz(S)
Next S
End If
Next aktiveZeile
End Sub


Sub Datensätze_teilen_schrägstrich()
'Datensätze (Spalte A) anhand von " / " in verschiedene Spalten trennen
Dim Satz, SplitSatz, S, Zei
For Zei = 1 To Range("A65536").End(xlUp).Row
Satz = Mid(Cells(Zei, 1), 3)
Satz = Left(Satz, Len(Satz) - 2)
SplitSatz = Split(Satz, " / ")
If UBound(SplitSatz) > 255 Then Msgbox "Houston, wir hamm das watt, wann kommt XL2007?"
For S = 0 To UBound(SplitSatz)
Cells(Zei, S + 1) = SplitSatz(S)
Next S
Next Zei
End Sub

...und so kann ein Datensatz aussehen:
( 25 / 1827437.001 / Bilanz & Buchhaltung / 16 / gekündigt ) ( 25 / 1827437.001 / Buchführungs Plus / 43 / gekündigt ) ( 25 / 1827437.001 / Buchführungs Plus / / in Ansicht gekündigt ) ( 25 / 1827437.001 / ControllerPlus Excel-Basic Upd / / in Ansicht gekündigt ) ( 25 / 1827437.001 / BBS Buchen u.Bilanzieren / 45 / gekündigt ) ( 25 / 1827437.001 / BBS Buchen u.Bilanzieren / 43 / gekündigt ) ( 25 / 1827437.001 / Buchführungs Plus / / in Ansicht gekündigt ) ( 25 / 1827437.001 / Kontierungs-Praxis-abc / 43 / gekündigt )
Wer von Euch kann mir bitte weiterhelfen?
Mein Dank geht schon jetzt in Eure Richtung.
Servus,
Anton

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: kombinieren von 2 Split-Makros
14.12.2006 20:07:12
2
Hallo Anton,
ersetze mit der Methode Replace in der Variablen Satz alle ") (" durch " / " führe dann den Split aus. Oder halt anders herum, je nachdem mit welchem Makro du arbeiten willst.
Gruss
Franz

Sub Datensätze_teilen_schrägstrich()
'Datensätze (Spalte A) anhand von " / " in verschiedene Spalten trennen
Dim Satz, SplitSatz, S, Zei
For Zei = 1 To Range("A65536").End(xlUp).Row
Satz = Mid(Cells(Zei, 1), 3)
Satz = Left(Satz, Len(Satz) - 2)
Satz = Replace(Satz, ") (", " / ")
SplitSatz = Split(Satz, " / ")
If UBound(SplitSatz) > 255 Then MsgBox "Houston, wir hamm das watt, wann kommt XL2007?"
For S = 0 To UBound(SplitSatz)
Cells(Zei, S + 1) = SplitSatz(S)
Next S
Next Zei
End Sub

Anzeige
AW: kombinieren von 2 Split-Makros
14.12.2006 21:10:27
2
Hallo Anton,
ein etwas umfangreicherer Vorschlag, der dazu noch etwas länger läuft - er hat aber auch seine Vorteile.
Damit Werte wie 1827437.001 nicht in Zahlen umgewandelt werden,
bekommen die Zielzellen vor dem Einfügen das Zahlformat "@" für Text.
Im ersten Durchlauf wird nur ermittelt, wie viele (Text-)Spalten gebraucht werden.
In den Langetexten kommen hin und wieder zwei Schrägstriche vor, die durch nur ein Leerzeichen getrennt sind.
Hier wird dann ein zusätzliches Leerzeichen eingefügt, damit der Split richtig klappt. (Es entsteht eine leere Zelle.)
Und hier der Code:
Option Explicit
Sub Split_Klammern_Schraegstrich()
' Spalte A anhand von " ) ( " und " / " in verschiedene Spalten trennen
Dim lngL As Long, zz As Long, strQ As String, strErg() As String
Dim ss As Integer, intM As Integer
Const strTa = " / / "
Const strTb = " /  / "
Const strT1 = " ) ( "
Const strT2 = " / "
Sheets(1).Activate
lngL = ActiveSheet.UsedRange.Row + ActiveSheet.UsedRange.Rows.Count - 1
For zz = 1 To lngL
If Len(Cells(zz, 1)) > 4 Then
strQ = Cells(zz, 1)
strQ = Right(strQ, Len(strQ) - 2)
strQ = Left(strQ, Len(strQ) - 2)
strQ = Replace(strQ, strTa, strTb)
strQ = Replace(strQ, strT1, strT2)
strErg = Split(strQ, strT2)
If UBound(strErg) + 1 > Columns.Count Then
MsgBox "Houston, wann kommt XL2007? - Zeile " & zz
Else
intM = IIf(intM > UBound(strErg), intM, UBound(strErg))
End If
End If
Next zz
Range(Cells(1, 1), Cells(lngL, intM + 1)).NumberFormat = "@"
For zz = 1 To lngL
If Len(Cells(zz, 1)) > 4 Then
strQ = Cells(zz, 1)
strQ = Right(strQ, Len(strQ) - 2)
strQ = Left(strQ, Len(strQ) - 2)
strQ = Replace(strQ, strTa, strTb)
strQ = Replace(strQ, strT1, strT2)
strErg = Split(strQ, strT2)
If UBound(strErg) + 1 <= Columns.Count Then _
Range(Cells(zz, 1), Cells(zz, UBound(strErg) + 1)) = strErg
End If
Next zz
Range(Columns(1), Columns(intM + 1)).AutoFit
Range(Rows(1), Rows(lngL)).AutoFit
End Sub
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
herzlichen Dank
15.12.2006 09:32:16
Anton
Hallo Erich,
herzlichen Dank für Deinen Code.
Er funzt hervorragend.
Deinen Aspekt mit den Zahlen im Textformat finde ich richtig. -Daran hatte ich garnicht gedacht.
Kann es sein, dass die Zahlen ein K.O.-Kriterium beim ersetzen spielen?
Ich hatte nämlich versucht in einem Zug mehrere Text-stücke zu ersetzen....
:-( klappte leider nicht.
Jetzt trenne ich erst alles auf, ersetzen dann, und schließlich wird daraus wieder ein Datensatz.
Dir und FCS nochmals vielen Dank für die Zeilen.
Servus,
Anton
Danke für Rückmeldung - freut mich! (oT)
15.12.2006 09:43:10
Erich

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige