d4shoernchen
Goto Top

Excel-Preisliste, Export als CSV. Eine Zeile, mehrere Spalten, gleicher Wert

Moin Kollegen,

ich hoffe die Excel- und Macroexperten können mir helfen.

Ich habe hier eine Exceltabelle die ungefähr so aussieht:

Artikel 50 100 200 500
Artikelnummer 1 4 3 2 1
Artikelnummer 2 8 7 6 5

Artikel ist die Überschrift, die Zahlen 50, 100, 200 und 500 sind die Mengen. Nun hat der Artikel je nach Mengenabnahme verschiedene Preise. Bei 50 Stück kostet der Artikel 4 €, bei 100 Stück nur noch 3 € pro Artikel usw. Diese Ausgabe benötige ich nun als .csv-Datei (Semikolon separiert).

Dies müsste dann ungefähr so aussehen im Ergebnis:
Artikelnummer 1;50;4
Artikelnummer 1;100;3
Artikelnummer 1;200;2
Artikelnummer 1;500;1
Artikelnummer 2;50;8
Artikelnummer 2;100;7
Artikelnummer 2;200;6
Artikelnummer 2;500;5

Da es sich hier um eine Liste mit ca. 2000 Artikeln handelt, habe ich noch keine schöne Lösung gefunden. Es kommt noch hinzu, dass dieser Fall jeden Monat auftreten wird. Eventuell habt ihr ja eine Lösung face-smile

Vielen Dank

Gruß
Toni

Content-ID: 297068

Url: https://administrator.de/contentid/297068

Ausgedruckt am: 22.11.2024 um 03:11 Uhr

114757
Lösung 114757 23.02.2016 aktualisiert um 11:47:48 Uhr
Goto Top
Moin,
wenn deine Tabelle mit den Überschriften in Zeile A1 anfangen
Sub Export()
    Dim objFile As Object, fso As Object, FILENAME As Variant
    FILENAME = Application.GetSaveAsFilename(FileFilter:="CSV-Datei (*.csv),*.csv")  
    If FILENAME <> False Then
        'FS Object erstellen  
        Set fso = CreateObject("Scripting.FileSystemObject")  
        'Ausgabedatei erstellen  
        Set objFile = fso.OpenTextFile(FILENAME, 2, True)
        
        With ActiveSheet
            'Überschriften ermitteln  
            Set rngHeader = .Range("B1", .Cells(1, Columns.Count).End(xlToLeft))  
            'Für jede belegte Zeile in Spalte A  
            For Each r In .Range("A2:A" & Cells(Rows.Count, "A").End(xlUp).Row)  
                'Schreibe für jeden Artikel und Spalte eine neue Zeile  
                For Each c In rngHeader
                    objFile.WriteLine r.Value & ";" & c.Value & ";" & r.Offset(0, c.Column - 1).Value  
                Next
            Next
            'Ausgabedatei schließen  
            objFile.Close
        End With
    Else
        MsgBox "Keine Dateiname vergeben, Abbruch.", vbExclamation  
    End If
End Sub
Gruß jodel32
d4shoerncheN
d4shoerncheN 23.02.2016 um 10:59:45 Uhr
Goto Top
Hallo jodel32,

schon mal vielen Dank.

Ich bekomme die Meldung "Laufzeitfehler '13': Typen unverträglich".

Augenscheinlich sieht es aber so aus, als hätte es funktioniert.

Weißt du trotzdem woran es liegen könnte?

Dank dir.

Gruß, Toni
114757
114757 23.02.2016 aktualisiert um 11:02:44 Uhr
Goto Top
Geht hier ohne Probleme. Las es einfach mal mit F8 schrittweise debuggen dann siehst du wo es bei dir hakt.

Stehen die Daten bei dir wirklich ab A1 also in A1 Steht die Überschrift "Artikel" ?
d4shoerncheN
d4shoerncheN 23.02.2016 um 11:26:00 Uhr
Goto Top
Mit dem debuggen versuche ich mal, dauert noch ein wenig.

Ach so, nein die richtige Überschrift lautet in der Tabelle "Herstellernr.". Danach folgen die Spalten 25, 50, 100, 250, 500, 1000, 2500, 5000, 10000, 25000 und 50000.

Gruß Toni
114757
114757 23.02.2016 aktualisiert um 11:33:29 Uhr
Goto Top
Ach so, nein die richtige Überschrift lautet in der Tabelle "Herstellernr.".
Der Inhalt ist egal, nur die Position sollte stimmen.

Hier meine Demo, lüppt einwandfrei ...
https://drive.google.com/file/d/0B_Oqbs4tcHfrT1hiUXpCQkNRMnc/view?usp=sh ...

p.s. enthält 200% keine Ransomware! face-wink
d4shoerncheN
d4shoerncheN 23.02.2016 um 11:42:30 Uhr
Goto Top
Hmm, komisch.

Ich hatte den Fehler erst vermutet, da in der Datei ein paar Zeilen falsch dargestellt wurden bzgl. der Bezug fehlte. Nun habe ich diese Zeilen gelöscht, nun ist das Script in einer Endlosschleife.
114757
114757 23.02.2016 aktualisiert um 11:46:13 Uhr
Goto Top
Zitat von @d4shoerncheN:
Ich hatte den Fehler erst vermutet, da in der Datei ein paar Zeilen falsch dargestellt wurden bzgl. der Bezug fehlte. Nun habe ich diese Zeilen gelöscht, nun ist das Script in einer Endlosschleife.
Stell doch dein Sheet mal anonymisiert zum Download oder schick mir den Link via PM, so ist das hier leider Rumraten hoch drei face-sad, sorry.
d4shoerncheN
d4shoerncheN 23.02.2016 um 11:47:44 Uhr
Goto Top
Habe die Excel-Datei geschlossen und noch einmal neu aufgemacht, nun funktioniert es.

Dank dir face-smile