Suchfunktion in einem großen Array - ich blicks nicht

  • Hallo,


    zur zeit habe ich ein Problem mit Excel im weitesten Sinne.

    Ausgangslage:
    20 Excel Files mit recht vielen Werten (SAP querry)
    jetzt müsste ich prüfen, in welchen von den Files ein bestimmter Wert steht.

    also frisch ans Werk und die mit _filelisttoarray die Liste mit den xls erstellt und als ini abgelegt

    [autoit]


    $avCommon = _FileListToArray(@ScriptDir)
    $sFile = @ScriptDir & "\Test.ini"
    ; Open file and append array
    $hFile = FileOpen($sFile, 1) ; 1 = append
    _FileWriteFromArray($hFile, $avCommon, 1)
    FileClose($hFile)

    [/autoit]

    Soweit ja alles noch machbar, dann die Excelfiles aufmachen und in ein Array einlesen. Ok soweit komm ich noch

    [autoit]


    While 1
    $line = FileReadLine($file)
    If @error = -1 Then ExitLoop
    $sFilePath1 = @ScriptDir & "\" & $line
    $oExcel = _ExcelBookOpen($sFilePath1)
    If @error = 1 Then
    MsgBox(0, "Error!", "Unable to Create the Excel Object")
    Exit
    ElseIf @error = 2 Then
    MsgBox(0, "Error!", "File does not exist - Shame on you!")
    Exit
    EndIf
    $avArray = _ExcelReadSheetToArray($oExcel)

    [/autoit]


    so ab hier lässt mich das Hilfefile im Stich bzw. Ich blicks nicht...

    Mein Ansatz war über _ArrayFindAll / _ArraySearch jetzt den Wert, den ich ganz am Anfang mit der kleinen Gui abgegriffen habe, zu suchen aber irgendwie will ich glaub zuviel :D

    [autoit]


    $sSearch =GUICtrlRead($Input1)
    $iKeyIndex = _ArrayFindAll($avArray, $sSearch, 1)
    If Not @error Then
    Msgbox(0,'Entry found',' Index: ' & $iKeyIndex)
    Else
    Msgbox(0,'Entry Not found',' Error: ' & @error)
    EndIf
    Wend

    [/autoit]


    Der Haken an der Sache ist das meine Excelfiles sehr groß sind also ich sag ma 2000 rows runter und 15 collums nach rechts :cursing:
    Wenn mir jemand einen Stubs in die richtige Richtung geben könnte? Ich seh vor lauter Array die Werte nicht mehr.


    Am Ende benötige ich auf eine Ausgabe ("233-123677-22" wurde in Querry200410.XLS gefunden)
    Eventuell ist mein Ansatz ja schon falsch und das geht einfach nicht mit nem Array.


    ich freu mich über jede Hilfe

    lg
    Christian

    • Offizieller Beitrag

    Ich werd nicht ganz schlau, was du möchtest.
    - In den Exceldateien steht (vermutlich) ein Begriff (wo steht der), den du suchen willst.

    Dann ist es doch viel einfacher, die Excelsuche zu nutzen. Kannst du auch über AutoIt anschieben und auswerten.

    Bsp.:

    [autoit]

    ; Eintrag suchen
    Local $sFilePath = 'C:\test\si.xls'
    Local $sSuchbegriff = '15.02.2009'

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    Local $oExcel = ObjCreate("Excel.Application")
    $oExcel.Visible = 0
    Local $oBook = $oExcel.Workbooks.Open($sFilePath)
    Local $oSheet = $oBook.Sheets(1)

    [/autoit][autoit][/autoit][autoit]

    Local $Zelle, $Address = 0
    $Zelle = $oSheet.UsedRange.Find($sSuchbegriff)
    If $Zelle <> '' Then $Address = $Zelle.Address ; Suchbegriff gefunden in Zelle.Adresse

    [/autoit]