In Excel Variable finden?

  • Hallo,
    Mit folgendem Code von "water" werden Zeilen von rohdaten.csv in ergebnis.csv verschoben:

    Spoiler anzeigen
    [autoit]

    #include <Excel.au3>
    $oExcel = _Excel_Open()
    $oRohdaten = _Excel_BookOpen($oExcel, @ScriptDir & "\rohdaten.csv")
    $oErgebnis = _Excel_BookOpen($oExcel, @ScriptDir & "\ergebnis.csv")
    $iTargetColumn = $oErgebnis.ActiveSheet.Usedrange.Columns.Count + 1
    $oTargetRange = $oErgebnis.ActiveSheet.Range("B" & $iTargetColumn)
    _Excel_RangeCopyPaste($oRohdaten.Activesheet, "A8:L16", $oTargetRange)
    _Excel_RangeDelete($oRohdaten.Activesheet, "A8:L16", $xlShiftUp)

    [/autoit]

    Wenn die Spalte A statt 8 Zellen bspw. nur 5 Zellen enthalten, wie gehe ich dann vor?
    - Wenn in "ergebnis.csv" nur 6 neue Zeilen beschrieben sind, brauche ich aus "rohdaten.csv" auch nur A8:L13. Wenn 3 Zeilen beschrieben sind, A8:L10.

    Schritt 1:
    Dann müsste ich in der "ergebnis.csv" wie bisher in Spalte B die letzte leere Zelle suchen:

    [autoit]

    $iTargetColumn = $oErgebnis.ActiveSheet.Usedrange.Columns.Count + 1
    $oTargetRange = $oErgebnis.ActiveSheet.Range("B" & $iTargetColumn)

    [/autoit]


    Schritt 2:
    Danach in der "ergebnis.csv" in Spalte A die beschriebenen Zellen zählen und als Variable speichern.

    [autoit]

    $iTargetColumn = $oErgebnis.ActiveSheet.Usedrange.Columns.Count
    $oTargetRange = $oErgebnis.ActiveSheet.Range("A" & $iTargetColumn)

    [/autoit]


    Schritt 3:
    Aus der Quelle, also "rohdaten.csv" genauso viele Zellen kopieren, wie hoch die Variable gezählt wurde.

    [autoit]

    _Excel_RangeCopyPaste($oRohdaten.Activesheet, "Variable?", $oTargetRange)

    [/autoit]


    Schritt 4:
    Löschen mit Variable.

    [autoit]

    _Excel_RangeDelete($oRohdaten.Activesheet, "Variable", $xlShiftUp)

    [/autoit]

    Wie lege ich diese Variable fest? Oder habe ich einen Denkfehler?
    Schöne Grüße

  • Hallo Dirkrid,
    das Problem erschließt sich mir nicht. Kannst Du mehr Infos liefern?
    Zunächst die Frage: Warum schreibst Du nicht die Rohdaten.csv direkt in die Ergebnis.csv und rufst diese dann mit Excel auf?
    Probiere doch mal die Zellangaben "A:L",, dann sollte die Anzahl der Zeilennummern nicht mehr gefordert sein

  • Hallo qwert23,

    die Daten werden mit iMacros von rohdaten.csv abgelesen und in ergebnis.csv eingetragen.
    Es ist damit leider nicht möglich (ich kenne keine Möglichkeit) die rohdaten.csv direkt in die ergebnis.csv zu schreiben.
    rohdaten.csv: [Blockierte Grafik: http://oi57.tinypic.com/of1ox0.jpg]
    ergebnis.csv: [Blockierte Grafik: http://oi58.tinypic.com/24dj95s.jpg]
    Wie auf dem Beispiel-Bild zu sehen ist, sind in der ergebnis.csv 5 mit iMacros erstellte Zellen (A8:A12).
    Jetzt müsste ich genauso so viele Zeilen von rohdaten.csv (A2:L6) in die ergebnis.csv (B8:M12) verschieben.

    Wie weiß ich aber, dass in der ergebnis.csv genau 5 Zellen existieren und diese verschoben werden sollen?

    • Offizieller Beitrag

    die Daten werden mit iMacros von rohdaten.csv abgelesen und in ergebnis.csv eingetragen.


    Und warum nimmst du dafür iMacros? Verwende doch gleich AutoIt und übertrage die Daten genau so, wie du sie brauchst.
    Und um dir dabei zu helfen, solltest du anhand der Rohdaten mal kurz aber präzise erläutern, wo sich diese Daten in der Ergebnis-Datei wiederfinden sollen und anhand welcher Kriterien eine Auswahl zu treffen ist.

  • Danke dir. Ich kannte bis letzter Woche AutoIt nicht und iMacros hat für mich den Vorteil, dass es sehr einfach ist, damit zu arbeiten.
    Ich werde versuchen den iMacros Skript mit AutoIt und der FF.au3 UDF zu realisieren.

    • Offizieller Beitrag

    dirkrid: Also so wird das nichts. Bröckchen für Bröckchen kommst du rüber mir dem, was du machst. Wir können dir nicht helfen, wenn du immer nur einen Teil deines Problems schilderst. Selbstverständlich gehört das Beschaffen der Daten auch zum Problem. Also nu mal Butter bei die Fische..

  • Das Verschieben der Daten innerhalb der csv Dateien waren das einzige Problem.
    Jetzt hast du mir weitere Probleme aufgetischt, die ich mit C&P, SuFu und learning by doing selbst zu lösen versuche. ;)

    :)

  • Ich muss leider auf meine Ursprüngliche Frage zurück kommen, da ich es nicht geschafft habe, sie zu lösen.
    Mit VBA funktioniert es folgendermaßen:


    Ich schaffe es aber nicht, diesen Code statt mit VBA mit AutoIt auszuführen.
    Kann mir jemand helfen?