Ergebnisse in ein Array speichern, erweitern und Information wieder finden.

  • Hallo zusammen,

    ich bin auf der Suche nach eine Lösung. Mein Problem ist folgende. Ich habe ein Excel mit mehreren Arbeitsblättern. Nun möchte ich ein bestimmten Inhalt suchen und Ergebnisse aus danebenstehende Spalte (+1) rausfinden.

    Mein Vorschlag:

    1. Excell wird geöffnet.

    2. Jeder Blatt in Schleife For $iSheet = 1 To $oWorkbook.Sheets.Count

    3. Jeder Schleife nimmt Info in Array (mit _Excel_RangeRead($oWorkbook, $oWorkbook.Worksheets($iRow).Name, Default, 2)

    4. Array wird erweitert (dritte Demension evtl.) -- Hier hänge ich. Ich dachte $aResultGesamt = _ArrayAdd($aResultGesamt,$aResult) sollte passen. Aber die Funktion _ArrayDisplay($aResultGesamt) zeigt mir nichts an.

    5. In Array Ergebnis rausfinden.

    Wo liegt bei mir ein Fehler ???

    Danke im Voraus

  • Hallo tubsids

    Aus der Hilfe zu _ArrayDisplay :

    Falls der Funktion ein Array mit mehr als zwei Dimensionen übergeben wird, so gibt die Funktion einen Fehler zurück und das Skript wird fortgesetzt.

    Werte bitte mal @error aus.

    -> 1 = kein Array

    -> 2 = zu viele Dimensionen. Es werden nur 1D und 2D Arrays unterstützt

    Gruß Musashi

    86598-musashi-c64-png

    "Am Anfang wurde das Universum erschaffen. Das machte viele Leute sehr wütend und wurde allenthalben als Schritt in die falsche Richtung angesehen."

  • Hallo tubsids

    Also für mich ist da kein Hinweis auf eine dritte Dimension. Aber ich kenne den Code ja auch nicht. Der Tipp von Musashi ist dennoch gut. Immer auf Fehler prüfen.

    Allerdings kommt hier bei _ArrayDisplay gar kein Array mehr an, weil du es vorher schon mit einem numerischen Wert überschreibst. Schau dir mal an, was _ArraAdd für Rückgabe-Werte hat. ;)

    Grüße autoiter

  • Hallo und Danke für die Rückmeldungen,


    Zu Fragen:

    $iRet = _ArrayDisplay($aResultGesamt) --> =0

    $iError = @error --> =1


    das Problem ist

    1. Die Blätter sind unterschiedlich befüllt (unterschiedliche Zeilen- und Spaltenzahlen mit Inhalten)

    2. Wie kann man hier eine Lösung finden ? Mehrere Array anlegen würde auch nicht helfen, da ich im Voraus nicht weiss wie viele Inhalten noch kommen.


    ???

    Danke im Voraus und Gruß

  • Selbst wenn die Arrays immer gleich groß wären, würde es ja nicht klappen, weil du das Array ja immer überschreibst. Wie geschrieben, das solltest du ändern ($aResultGesamt = _ArrayAdd($aResultGesamt,$aResult)).

    Man kann das natürlich auch ganz anders manchen. Aber was hindert dich daran, erst die Spalten des neuen Arrays zu ermitteln, zu schauen, ob es mehr sind als die Spalten des bisherigen Array und in diesem Fall das bisherige Array ($aResultGesamt) per ReDim auf die notwendige Größe zu erweitern. Das ist nicht viel Arbeit und dukannst danach dein _ArrayAdd ausführen.

    Grüße autoiter

  • und in diesem Fall das bisherige Array ($aResultGesamt) per ReDim auf die notwendige Größe zu erweitern

    Dabei geht aber doch der Inhalt des Arrays verloren... mit _ArrayColInsert($aArray, UBound($aArray, 2) + 1) aber nicht...

  • Wie kommst du darauf, dass der bisherige Inhalt verloren ginge?

    Grüße autoiter

  • Wie kommst du darauf, dass der bisherige Inhalt verloren ginge?

    Ich hatte das hier im Sinn...

    AutoIt
    Local $aArray = [111111111,222222222,333333333]
    _ArrayDisplay($aArray, '$aArray - Before ReDim')
    ReDim $aArray[UBound($aArray)][2]
    $aArray[0][1] = 44444444
    _ArrayDisplay($aArray, '$aArray- After ReDim')
  • Leute, das einzige Problem wäre doch, wenn die Spaltenüberschriften in den unterschiedlichen Arbeitsblättern an unterschiedlichen Stellen wären. Dann müsste man das ja ganz anders angehen. Da tubsids aber _ArrayAdd verwendet scheint das nicht der Fall zu sein. Die Zeilenanzahl spielt ja keine Rolle. Es geht nur um die Spalten - und da muss das Array nie verkleinert werden sondern nur vergrößert werden, falls im anzuhängendem Array eine größere Anzahl an Spalten vorhanden ist.

    ich glaube es war von der Erweiterung der Dimensionen eines Arrays die Rede

    Das wäre natürlich noch ein Punkt. Mal sehen ob tubsids da noch etwas Klarheit hineinbringen kann.

    Grüße autoiter