Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Zeilen, die Komma enthalten, kopieren und Werte aufteilen
#1
Hallo liebe Gemeinde,

ich versuche grade, dass das Makro in einer Spalte ein "," findet, diese Zeile dann verdoppelt und den Wert, der in der Spalte steht, auf die beiden
Zeilen in der Nachbarzeile darzustellen.

Das heißt, dass der erste Wert, der vor dem Komma steht, in die Nachbarzelle der Ursprungszeile geschrieben wird und der Wert, der nach dem Komma steht,
in die Nachbarzelle der verdoppelten Zeile (jeweils neben der Spalte "Dienste"), so dass ich für beide Dienste jeweils eine Zeile habe.

Dass verdoppeln klappt wunderbar, nur das aufsplitten des Wertes bekommen ich nicht hin.

Hier mein Versuch:

Dim LR As Long, i As Long, Dienste As String, Dienst1 As String, Dienst2 As String
    Application.ScreenUpdating = False
    With Sheets("Testblatt")
        If .FilterMode Then .ShowAllData ' Autofilter alle
        LR = .Cells(.Rows.Count, "A").End(xlUp).Row 'letzte Zeile der Spalte
        For i = LR To 2 Step -1
            If InStr(.Cells(i, 14), ",") > 0 Then
            With .Range(.Cells(i, 1), .Cells(i, 14))
                    .Offset(1, 0).Insert Shift:=xlDown
                    .Copy .Offset(1, 0)
                   
                    Dienste = .Cells(i, 14).Value 'Wert der Zelle "Dienste"
                    Dienst1 = Left(Dienste, 4) ' Dienst1
                    Dienst2 = Right(Dienste, 4) ' Dienst2
                  .Cells(i, 15) = Dienst1
                  .Cells(i + 1, 15) = Dienst2
                End With
            End If
        Next
    End With


Wo ist mein Denkfehler bei der ganzen Sache?

Viele Grüße
Andreas

Testdatei ist dabei.
.xlsm   Testmappe CEF.xlsm (Größe: 22,43 KB / Downloads: 9)
Antworten Top
#2
Verwende TextinSpalten
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
[-] Folgende(r) 1 Nutzer sagt Danke an snb für diesen Beitrag:
  • ari-2001
Antworten Top
#3
Hi,

schließe das 2. With ... nach dem Kopieren der Zeile

VG Juvee
[-] Folgende(r) 1 Nutzer sagt Danke an juvee für diesen Beitrag:
  • ari-2001
Antworten Top
#4
Hallo und vielen Dank,

leider führt das nicht zum gewünschten Erfolg.

Hast Du noch einen anderen Trick auf Lager?

LG

Andreas
Antworten Top
#5
Hallo,

Code:
Sub DiensteSplitten()
  Dim LR As Long, i As Long
  Application.ScreenUpdating = False
  With Sheets("Testblatt")
    If .FilterMode Then .ShowAllData ' Autofilter alle
    LR = .Cells(.Rows.Count, 1).End(xlUp).Row 'letzte Zeile der Spalte
    For i = LR To 2 Step -1
      If InStr(.Cells(i, 14), ",") > 0 Then
        .Rows(i).Copy
        .Rows(i + 1).Insert
        .Cells(i, 15).Resize(2).Value = Application.Transpose(Split(.Cells(i, 14).Value, ","))
      End If
    Next
  End With
  Application.CutCopyMode = False
End Sub

Gruß Uwe
[-] Folgende(r) 1 Nutzer sagt Danke an Kuwer für diesen Beitrag:
  • ari-2001
Antworten Top
#6
Code:
Sub M_snb()
  sn = Cells(1).CurrentRegion
 
  For j = 2 To UBound(sn)
    st = Split(sn(j, 14), ", ")
    If UBound(st) > 0 Then
        sn(j, 14) = st(1)
        Cells(2000 + j, 1).Resize(, 14) = Application.Index(sn, j)
        sn(j, 14) = st(0)
    End If
  Next
 
  Cells(1).CurrentRegion = sn
  Columns(1).SpecialCells(4).EntireRow.Delete
End Sub
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
[-] Folgende(r) 1 Nutzer sagt Danke an snb für diesen Beitrag:
  • ari-2001
Antworten Top
#7
Hi,

jo, du mußt natürlich den Bereich auch auf 15 Spalten erweitern

Code:
Sub DiensteSplitten()
Dim LR As Long, i As Long, Dienste As String, Dienst1 As String, Dienst2 As String
    Application.ScreenUpdating = False
    With Sheets("Testblatt")
        If .FilterMode Then .ShowAllData ' Autofilter alle
        LR = .Cells(.Rows.Count, "A").End(xlUp).Row 'letzte Zeile der Spalte
        For i = LR To 2 Step -1
            If InStr(.Cells(i, 14), ",") > 0 Then
            With .Range(.Cells(i, 1), .Cells(i, 15))  'hier
                    .Offset(1, 0).Insert Shift:=xlDown
                    .Copy .Offset(1, 0)
              End With                                 'hier
                    Dienste = .Cells(i, 14).Value 'Wert der Zelle "Dienste"
                    Dienst1 = Left(Dienste, 4) ' Dienst1
                    Dienst2 = Right(Dienste, 4) ' Dienst2
                  .Cells(i, 15) = Dienst1
                  .Cells(i + 1, 15) = Dienst2
               
            End If
        Next
    End With
End Sub
VG Juvee
[-] Folgende(r) 1 Nutzer sagt Danke an juvee für diesen Beitrag:
  • ari-2001
Antworten Top
#8
Die Tabelle einmal duch PowerQuery jagen.

Spalten Dienste aufteilen. Unter "erweitert" -> Zeilen auswählen.


Angehängte Dateien Thumbnail(s)
   
Cadmus
[-] Folgende(r) 1 Nutzer sagt Danke an Cadmus für diesen Beitrag:
  • ari-2001
Antworten Top
#9
Hallo zusammen,

habt vielen Dank, ich hätte es mit Sicherheit nicht hinbekommen!

Tolle, schnell arbeitende Lösungsvorschläge.

Noch einmal herzlichen Dank in die Runde!

Gruß
Andreas
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste