Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Split mit 3 Werten

Split mit 3 Werten
13.03.2023 18:41:59
Eisi
Hallo zusammen,
nachfolgender Code trennt immer folgenden Text in einer Zelle: 60 / 75 / 125
Kopiert die Zeile und trägt in die erste Position 60 ein und darunter die 75 und darunter die 125 ein.
Aber die restlichen Werte in den Zellen in der die 125 steht bleiben leer.
Die Datenzeile, in der die 60 steht wird in die Datenzeile 75 kopiert, aber nicht mehr in die Datenzeile 125.
Warum ist das so, an welcher Stelle fehlt noch eine Information?
Herzlichen Dank für die Hilfe.
VG Eisi :-)

Sub ZeileKopierenEinfuegen()
    Dim lastRowAP As Long
    Dim i      As Long
    Dim mySplit As Variant
    With tbl_DatenstammQuelle
        lastRowAP = .Cells(.Rows.Count, 42).End(xlUp).Row 'Spalte 42 = Spalte AP
        For i = lastRowAP To 2 Step -1
            mySplit = Split(.Range("AP" & i).Value, " / ")
            If UBound(mySplit) > 1 Then
                .Rows(i).Copy
                .Rows(i + 1).Insert Shift:=xlDown
                .Rows(i + 2).Insert Shift:=xlDown
                .Range("AP" & i).Value = mySplit(0)
                .Range("AP" & i + 1).Value = mySplit(1)
                .Range("AP" & i + 2).Value = mySplit(2)
                Application.CutCopyMode = False
            End If
        Next
    End With
End Sub

Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Split mit 3 Werten
13.03.2023 19:01:22
onur
Ich kann deinen Ausführungen nicht folgen.
Wie wäre es mit einer Beispielsdatei, wo du zeigst, wie das Ganze aussieht und wie es aussehen sollte ?
AW: Split mit 3 Werten
13.03.2023 19:42:40
Yal
Hallo Eisi,
Der Copy-Insert auf einer ganzen Zeile verhält sich anders als den Copy-paste, bzw. einen "Copy-Paste-Paste", wie Du es haben möchtest: nach der ersten "Insert" wird die Zwischenablage geleert. So wird bei zweiten Vorgang nur eine leere Zeile inseriert.
Du kannst das umgehen, in dem Du einen Insert auf 2 Zeilen machst:
Sub ZeileKopierenEinfuegen()
Dim i      As Long
Dim mySplit As Variant
    Application.EnableEvents = False 'weil in Zellen reingeschrieben wird
    With tbl_DatenstammQuelle
        For i = .Cells(.Rows.Count, "AP").End(xlUp).Row To 2 Step -1
            mySplit = Split(.Range("AP" & i).Value, " / ")
            If UBound(mySplit) > 1 Then
                .Rows(i).Copy
                .Rows(i + 1 & ":" & i + 2).Insert Shift:=xlDown
                .Range("AP" & i).Resize(3, 1) = Application.Transpose(mySplit)
            End If
        Next
    End With
    Application.EnableEvents = True
End Sub
Was Du da gerade machst, nennt sich Entpivotieren und lässt sich sehr gemütlich mit Power Query machen (ok, da verliert man dabei die Formeln...)
VG
Yal
Anzeige
AW: Split mit 3 Werten
13.03.2023 20:25:12
Eisi
Hallo Yal,
vielen Dank, läuft super.
Eine Frage bitte noch:
Die kopierte Zeile ist mit einer grünen Strichlinie komplett umrahmt, also noch aktiv.
Ich dachte mir mit: Range("A2").Select kann ich das deaktivieren.
Aber wenn der Cursor in A2 steht, dann ist die kopierte Zeile 345 immer noch aktiv. Wie schaltet das man aus?
Danke schön.
VG Eisi :-)
Anzeige
AW: Split mit 3 Werten
13.03.2023 20:30:14
onur
Das bedeutet nicht "aktiv", sondern noch im Clipboard gespeichert.
Einfach Zwischenspeicher löschen:
Application.CutCopyMode = False

AW: Split mit 3 Werten
13.03.2023 20:33:58
Eisi
Hallo onur,
super, danke schön :-)
VG Eisi
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige