Text in Zellen splitten

  • moin moin,


    habe da mal wieder ein Problem mit Excel.

    Habe diese Reihe:
    [Blockierte Grafik: http://www.imgbox.de/users/jojono/autoit/1.JPG]
    Ist nur als Beispiel gedacht. Die Reihen werden erzeugt und sind variabel, können also länger oder kürzer ausfallen.
    Aber das Komma wird in allen Zellen angezeigt außer Datum und Zeit

    Ich möchte den Text der in den einzelnen Zellen ist splitten das es dann so aussieht:
    [Blockierte Grafik: http://www.imgbox.de/users/jojono/autoit/2.JPG]

    Wie man eine Zeile einfügt weiss ich:

    [autoit]

    $oExcel.ActiveSheet.Range("A7:A7" ).Select
    $oExcel.ActiveCell.EntireRow.Insert(1);----->fügt eine Zeile hinzu

    [/autoit]


    nur nicht wie ich das gesplittet bekomme, würde sich ja das Komma für anbieten.


    mfg
    oh-ha

    Es gibt drei Wahrheiten: deine Wahrheit, meine Wahrheit und die Wahrheit

    2 Mal editiert, zuletzt von oh-ha (26. Juni 2010 um 09:21)

  • Hallo,

    schau Dir mal in der Hilfe die Befehle:

    StringLeft

    StringMid

    StringRight

    an.

    Gruß Buddha

  • Hi, Die Schritte sind ungefähr:
    1- Hole den Text aus der Zelle
    2- Verwende StringInStr um das Komma zu finden
    3- mit StringLeft, StringTrimleft die Teile aus dem String herausschneiden
    4- die Teile in die Tabelle zurückschneiden.

    Für 2 und 3 kannst du auch StringSplitOnce verwenden ;)

  • sorry fürs späte melden,

    habe mal getestet und leider nur getestet :(
    Habe da noch irgendeinen Fehler drin.

    [autoit]


    $sFilePath3 = @ScriptDir & "\test.xls" ; Pfad bestimmen zu der Tabelle allgemein
    $oExcel = _ExcelBookOpen($sFilePath3, $fVisible = 0); Tabelle öffnen
    $oExcel.ActiveSheet.Range("A7:A7" ).Select ; Makieren
    $oExcel.ActiveCell.EntireRow.Insert(1) ; fügt eine Zeile hinzu
    $read1 = _ExcelReadCell($oExcel, 6, 1) ; Wird die Zelle A6 eingelesen
    $array = StringSplit($read1, ",", 1) ; Wird der Text der Zelle A6 gesplittet. Splitzeichen = ,
    _ExcelWriteArray ($oExcel, 6, 1, $array[1]) ; Array[1] in die Zelle A6 einlesen
    _ExcelWriteArray ($oExcel, 7, 1, $array[2]) ; Array[2] in die Zelle A7 einlesen
    MsgBox(0, "$result:", $array[1]) ; Zum testen ( Array[1] wird richtig angezeigt)
    MsgBox(0, "$result:", $array[2]) ; Zum testen ( Array[2] wird richtig angezeigt)
    MsgBox(0, "$result:", @error) ; @error = 0
    _ExcelBookSaveAs($oExcel, @ScriptDir & "\Test123.xls")
    _ExcelBookClose($oExcel)

    [/autoit]


    Es werden Array[1] und [2] nicht in die Tabelle geschrieben aber in der MsgBox richtig angezeigt.
    Wo liegt da der Fehler drin ?

    Edit: Nehme Array´s da die Zeilenlänge der Reihe 6 Variabel ist und das wohl besser mit Array´s zu machen ist.


    mfg
    oh-ha

    Es gibt drei Wahrheiten: deine Wahrheit, meine Wahrheit und die Wahrheit

  • Ok habe es nun,

    Danke für die Denkanstöße :)

    Habe da wohl so einiges verwechselt.
    So geht es nun:

    [autoit]


    $sFilePath3 = @ScriptDir & "\test.xls" ; Pfad bestimmen zu der Tabelle allgemein
    $oExcel = _ExcelBookOpen($sFilePath3, $fVisible = 0); Tabelle öffnen
    $oExcel.ActiveSheet.Range("A7:A7" ).Select ; Makieren
    $oExcel.ActiveCell.EntireRow.Insert(1) ; fügt eine Zeile hinzu
    $read1 = _ExcelReadCell($oExcel, 6, 1) ; Wird die Zelle A6 eingelesen
    $array = StringSplit($read1, ",", 1) ; Wird der Text der Zelle A6 gesplittet. Splitzeichen = ,
    _ExcelWriteCell ($oExcel, $array[1], 6, 1) ; Array[1] in die Zelle A6 einlesen
    _ExcelWriteCell ($oExcel, $array[2], 7, 1) ; Array[2] in die Zelle A7 einlesen
    MsgBox(0, "$result:", $array[1]) ; Zum testen ( Array[1] wird richtig angezeigt)
    MsgBox(0, "$result:", $array[2]) ; Zum testen ( Array[2] wird richtig angezeigt)
    MsgBox(0, "$result:", @error) ; @error = 0
    _ExcelBookSaveAs($oExcel, @ScriptDir & "\Test123.xls")
    _ExcelBookClose($oExcel)

    [/autoit]

    mfg
    oh-ha

    Es gibt drei Wahrheiten: deine Wahrheit, meine Wahrheit und die Wahrheit