Viele Spalten unter einander

  • Excel

Es gibt 1 Antwort in diesem Thema. Der letzte Beitrag () ist von INOPIAE.

    Viele Spalten unter einander

    Hallo Zusammen,

    ich bekomme eine CSV-Datei in der in einer Spalte mehrere Einträge enthalten sind.

    tabelle - db
    ID;HOST;DB
    4166;DUNE;ASMTDB24,ZENTEST,ZENTRC,ZENTST1,ZENTT90

    ich möchte die Daten aus der Spalte DB alle unter einander schreiben.

    tabelle - neu
    ID;HOST;DB
    4166;DUNE;ASMTDB24
    4166;DUNE;ZENTEST
    4166;DUNE;ZENTRC
    4166;DUNE;ZENTST1
    4166;DUNE;ZENTT90

    Hier für habe ich ein Script aber leider fiunktioniert es nicht, kann mir einer helfen?


    Visual Basic-Quellcode

    1. Sub Makro1()
    2. '
    3. ' Makro1 Makro
    4. ' Makro am 24.02.2010 von a134029 aufgezeichnet
    5. '
    6. ' Tastenkombination: Strg+ö
    7. '
    8. Sub füllen()
    9. For i = 2 To 305
    10. If Sheets("db").Cells(i, 1) <> "" Then
    11. For x = 2 To 151
    12. aa = Sheets("db").Cells(i, x)
    13. If aa <> "" Then
    14. ll = ll + 1
    15. Sheets("neu").Cells(ll, 1) = Sheets("db").Cells(i, 1)
    16. Sheets("neu").Cells(ll, 2) = aa
    17. End If
    18. Next
    19. End If
    20. Next
    21. End Sub


    Vielen Dank für die Hilfe und Gruß

    Jörg
    Vorne weg 2 Anmerkungen:
    1. Deklariere mal Deine Variablen innerhalb der Prozedur. Hier hilft es wenn man an den Kopf des Moduls Option Explicit schreibt bzw. dies am Besten im VBA-Editor unter Extras-Optionen setzt.
    2. Gewöhne Dir an auch zu sagen welche Eigenschaft eines Objectes Du nutzen willst. VBA macht es einem da augenscheinlich einfach aber man solltes es trotzdem machen. Statt Sheets("neu").Cells(ll, 1) Sheets("neu").Cells(ll, 1).value
    Zu Deinem eigentlichen Problem:
    Die CSV-Datei liegt in Excel schon als Excel-Tabelle vor oder?
    So wie ich das sehe schreibst Du folgendes:
    Herkunftzeile
    4166 Dune ASMTDB24 ZENTEST ....
    Ergebnis sollte bei Dir zur Zeit so aussehen:
    4166 Dune
    4166 ASMTDB24
    4166 ZENTEST
    ....

    Wenn Du nur 2 Spalten beschreibst, gibt es auch nur die Daten in 2 Spalten. Du willst Doch, dass es so aussieht:
    4166 Dune ASMTDB4
    4166 Dune ZENTEST
    ....
    Dann musst Du dem Programm dies auch sagen.

    Achte auch darauf, dass Du ggf. an das Limit von Excel herankommst. Zur Zeit bewegt sich Deine Zieltabelle so bis zu 50.000 Zeilen. Excel bis 2003 kann nur 65.536 Zeilen verarbeiten.

    PS. Ich selber würde dies wahrscheinlich eher über einen direkten Zugriff auf die Quell-Datei lösen, in dem ich die Datei Zeilenweise auslese, dabei zerlegen un die einzelnen Werte direkt in die ExcelDatei schreiben.
    NB. Es ist doch schön, wenn man lesbare Namen vergibt. Siehe auch [VB.NET] Beispiele für guten und schlechten Code (Stil).