Microsoft Excel

Herbers Excel/VBA-Archiv

Datenexport formatieren

Betrifft: Datenexport formatieren von: Nils
Geschrieben am: 03.09.2020 16:41:07


Hallo zusammen,

im Rahmen einer Wettbewerbsanalyse möchte/muss ich Kaufdaten verarbeiten.

Leider ist der Anbieter der Daten nicht in der Lage, seinen Datenexport ausreichend kompatibel mit Excel zu gestalten.

D.h. der Datenexport kommt in der im Tab. “Systemexport“ dargestellten Formatierung aus dem System.
In dieser Form kann ich die Daten nicht mit Excel-Pivot analysieren, da die Parameter nicht in einzelnen Spalten aufgerufen werden.

Meine Frage lautet deshalb: Ist es möglich, die Daten mit Excel automatisiert so zu bearbeiten, dass die Aufbereitung wie im Tab. „Zielformatierung“ erfolgt?

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

Wichtig dabei ist, dass der ganz oben gestellte Produktname immer als einheitliche Kennung ausgegeben wird, so dass man die Lieferantenpreise anschließend via Pivot horizontal darstellen kann.

Die durch Leerzeichen getrennten Inhalte sollen auf separate Spalten aufgeteilt werden.
Lediglich der Mittelteil zwischen der langen Zahl (PZN) und der Größe soll in einer Spalte zusammengefasst werden.

Ich bin hier mit meinem Latein am Ende…
Hat jemand eine Idee, wie man das angehen kann?

Danke vorab und viele Grüße
Nils

Betrifft: AW: Datenexport formatieren
von: onur
Geschrieben am: 03.09.2020 17:31:44

Ist die Artikelnummer immer der Artikelbezeichnung vorangestellt, wieviele Stellen mind. hat sie immer und besteht sie immer nur aus Ziffern ?

Betrifft: AW: Datenexport formatieren
von: Nils
Geschrieben am: 03.09.2020 20:55:30

Hallo zusammen,

danke für die schnelle Rückmeldung. Ja, Daten formatieren ist angesichts der Transformationsanfrage tatsächlich irreführend und für mich ist auch nachvollziehbar, dass die in "Zielformatierung" formulierte Anforderung wohl zu komplex ist, um ohne erheblichen Aufwand zu einer Lösung zu kommen.

Nach weiterer Überlegung ist das vielleicht aber auch gar nicht erforderlich.Im Grunde genommen wäre es für mich ausreichend, wenn die jeweils vertikal und hierarchisch übergreifenden Produktnamen und der Name des jeweiligen Lieferanten als separate Spalten neben die restlichen Daten gestellt würden.

Dann verbliebe der umfangreichere, dritte Datensatz (z.B."3653808 ACETYLCYSTEIN API 25 G") Diesen könnte ich auch mit etwas manuellen Aufwand über die Funktion "Text in Spalten" auf Einzelspalten aufteilen und damit dann weiter arbeiten. Mir geht es nur darum, die Daten mit Pivot anschließend analysieren zu können und das wäre dann ja vorbereitet.

Somit sinkt die Komplexität sicherlich deutlich.
Wäre das ohne größeren Aufwand umsetzbar?

Danke vorab und einen schönen Abend,

Nils

Betrifft: AW: Datenexport formatieren
von: Nils
Geschrieben am: 03.09.2020 20:59:35

Sorry, die Frage

"Ist die Artikelnummer immer der Artikelbezeichnung vorangestellt, wieviele Stellen mind. hat sie immer und besteht sie immer nur aus Ziffern ?"

hatte ich nicht beantwortet. Die Nr. ist immer vorangestellt, was aber nach Anpassung der Anfrage wahrscheinlich nicht mehr relevant ist, da das dann ja manuell über "Text in Spalten" gemacht würde.

Betrifft: AW: Datenexport formatieren
von: UweD
Geschrieben am: 04.09.2020 11:10:09

Hallo

was meinst du hierzu??


Die @ am Ende in einigen Zeilen... sind die wichtig?
Sub Zielformat()
    Dim TB1, LR As Long, i As Long, Z1 As Integer, j As Integer
    Dim Arr, TMP As String, SP As Integer
    
    Set TB1 = Sheets("Systemexport")
    Z1 = 3 'erste Zeile mit Daten
    SP = 6 'Anzahl neue Spalten
    
    LR = TB1.Cells(TB1.Rows.Count, "A").End(xlUp).Row 'letzte Zeile der Spalte
    
    TB1.Copy After:=Sheets(Sheets.Count)
    
    With ActiveSheet
        .Name = "Zielformatierung"
        .Columns(1).Resize(, SP).Insert Shift:=xlToRight
        SP = SP + 1 'Die Spalte mit den Ursprungswerten
        
        .Cells(2, 1) = "Produkt"
        .Cells(2, 2) = "Lieferant"
        .Cells(2, 3) = "PNZ"
        .Cells(1, 3) = "Filter" 'wird zum filtern benötigt
        .Cells(2, 4) = "Name Lieferant"
        .Cells(2, 5) = "Größe"
        .Cells(2, 6) = "Einheit"
        
        For i = Z1 To LR
            TMP = .Cells(i, SP)
            
            If Left(TMP, 6) = "      " Then
                'weder Produkt noch Lieferant
                .Cells(i, 1) = .Cells(i - 1, 1)
                .Cells(i, 2) = .Cells(i - 1, 2)
                Arr = Split(Trim(TMP), " ")
                TMP = ""
                
                .Cells(i, 3) = Arr(0)   'PNZ
                For j = 1 To UBound(Arr)
                    If Not IsNumeric(Arr(j)) Then
                        'Suchen bis Ziffern (=Größe)
                        TMP = TMP & Arr(j) & " "
                        
                    Else
                        .Cells(i, 4) = Trim(TMP)  ' Bezeichnung
                        .Cells(i, 5) = Arr(j)     'Größe
                        .Cells(i, 6) = Arr(j + 1) 'Einheit
                        Exit For
                    End If
                Next
                
            ElseIf UCase(TMP) = TMP Then
                'Großbuchstaben = Produktname
                .Cells(i, 1) = TMP
                      
            Else
                'Lieferant
                .Cells(i, 1) = .Cells(i - 1, 1)
                .Cells(i, 2) = TMP
                
            End If
        Next
    
    
        .Columns(SP).Delete xlLeft 'Alte Spalte löschen
        
        If .AutoFilterMode Then .AutoFilterMode = False ' Autofilter ausschalten
        
        With .Cells(Z1).Resize(LR - Z1 + 1)
            'Leere Zeilen löschen
            .AutoFilter Field:=1, Criteria1:="="
            .Offset(1).EntireRow.Delete Shift:=xlUp
        End With
        .AutoFilterMode = False
        .Cells(1, 3).ClearContents
        
        'Spalten ausrichten
        .Columns(1).Resize(, SP).EntireColumn.AutoFit
    End With
End Sub
LG UweD

Betrifft: AW: gemeint ist wohl Daten umstrukturieren ...
von: neopa C
Geschrieben am: 03.09.2020 19:35:59

Hallo Nils,

... und dafür ehe ich neben einer VBA-Lösung (mit ich mich nicht befasse) die Möglichkeit des Einsatzes einer Lösung über die Funktionalität "Daten abrufen und transformieren" (PowerQuery). Persönlich am ehestens über eine Formellösung.Dies allerdings nur, wenn keine Massendaten (tausende Datensätze)
auszuwerten sind.

Wie auch immer, gäbe es dazu aber eine Reihe von Fragen zu klären, die dann aufwandsmäßig eine normale (kostenfreie) Forumshilfe übersteigen würde.

Gruß Werner
.. , - ...

Beiträge aus dem Excel-Forum zum Thema "Datenexport formatieren"