Microsoft Excel

Herbers Excel/VBA-Archiv

Datenexport transformieren

Betrifft: Datenexport transformieren von: Nils
Geschrieben am: 04.09.2020 09:23:57

Hallo zusammen,

ich hatte gestern ein Thema hochgeladen, was sich bei näherer Betrachtung als unnötig komplex erwiesen hat, deshalb starte ich meine Anfrage neu und umformuliert. Die Arbeitsdatei befindet sich hier:

https://www.herber.de/bbs/user/140037.xlsx

Ich möchte die Daten aus dem Systemexport Tab. „Systemexport“ so transformieren, dass sie mit Pivot analysiert werden können.

Dazu ist es erforderlich, die im Export leider übereinander dargestellten Positionen in einzelnen Spalten zu positionieren.
Im Falle der „Rest“-Informationen (Tab. “Zielformatierung“) kann ich das manuell über ‚Text in Spalten‘ lösen, da die Inhalte durch Leerzeichen getrennt sind.

Keinen Ansatz habe ich für die übergreifenden Produkt- und Lieferantenbezeichnungen, die gem. „Zielformatierung“ ebenfalls in separate Spalten übertragen werden sollen.

Hierbei ist zu berücksichtigen, dass die Produktbezeichnung IMMER über die Lieferantenbezeichnung gestellt ist, wenn diese in Spalte A übereinander der „Rest“-Bezeichnung überstellt sind, was für eine Formellösung ggf. hilfreich ist

Hat jemand eine Idee, wie man das angehen könnte?

Danke vorab und viele Grüße
Nils

https://www.herber.de/bbs/user/140037.xlsx

Betrifft: AW: Datenexport transformieren
von: ChrisL
Geschrieben am: 04.09.2020 10:12:20

Hi Nils
Sub t()
Dim i As Long, lZ As Long, strProdukt As String, strLieferant As String
Dim WS1 As Worksheet: Set WS1 = Worksheets("Systemexport")
Dim WS2 As Worksheet: Set WS2 = Worksheets("Zielformatierung")

WS2.Rows("3:" & Rows.Count).Delete

For i = 3 To WS1.Cells(Rows.Count, 1).End(xlUp).Row
    If Left(WS1.Cells(i, 1), 1) = " " Then
        lZ = WS2.Cells(Rows.Count, 1).End(xlUp).Row + 1
        WS2.Cells(lZ, 1) = strProdukt
        WS2.Cells(lZ, 2) = strLieferant
        WS2.Cells(lZ, 3) = Trim(WS1.Cells(i, 1))
    Else
        If WS1.Cells(i, 1) Like "Lieferant*" Then
            strLieferant = WS1.Cells(i, 1)
        Else
            strProdukt = WS1.Cells(i, 1)
        End If
    End If
Next i
End Sub
cu
Chris

Betrifft: AW: Datenexport transformieren
von: Nils
Geschrieben am: 04.09.2020 10:36:37

Hallo Chris,

perfekt, danke! Das ist genau die Lösung, nach der ich gesucht habe!

Viele Grüße,

Nils