Excel Suche nach 2 Werten

  • Excel durch einen Array ersetzt, Excel-spezifische Zeilen auskommentiert. Skript getestet und läuft:

    BTW: Die Art der Verknüpfung von Strings ist nicht relevant.

  • Excel durch einen Array ersetzt, Excel-spezifische Zeilen auskommentiert. Skript getestet und läuft:

    BTW: Die Art der Verknüpfung von Strings ist nicht relevant.

    Hallo Leute :)

    vielen Dank nochmal, das hat dann alles funktioniert in meinem Hauptscript, aber .... :)

    jetzt möchte ich die Zell Adresse der beiden überprüften werte haben, um damit weiter zu arbeiten - wer kann mir hier weiterhelfen ??

    Hier in meinem Beispiel das gefundene Ergebnis in Reihe 26 ( B26 und C26 )

    Vorab vielen Dank :)

    Einmal editiert, zuletzt von SOLVE-SMART (24. Januar 2023 um 09:30)

  • $i + 1 ist die Zeile und $j + 1 ist die Spalte. Mit der Funktion _Excel_ColumnToLetter kannst Du die Spaltennummer in den entsprechenden Buchstaben umwandeln.

  • $i + 1 ist die Zeile und $j + 1 ist die Spalte. Mit der Funktion _Excel_ColumnToLetter kannst Du die Spaltennummer in den entsprechenden Buchstaben umwandeln.

    ... irgendwie kriege ich es nicht hin :( ich bekomme den Wert Y raus

    ich möchte doch nur wie in meinem Beispiel bei den gefundenen Werten "Reihe" 26 herausbekommen, damit ich dann damit weiterarbeiten kann ...


    Spoiler anzeigen

    $zeile = _Excel_ColumnToLetter($i + 1)

    ConsoleWrite($zeile & @CRLF)

  • In meinem Codeteil

    Code
    For $i = 0 To ..
        ....
    Next

    wird die komplette eingelesene Tabelle durchsucht. $i ist dabei die Zeile (in Deinem Beispiel 26).

    Da der Index eines Array bei 0 und die Zeilennummer in Excel bei 1 beginnt, musst Du $i + 1 nehmen um die Zeile/Reihe zu ermitteln.

    Wenn Du dann die ConsoleWrite Zeile durch Deinen Code ersetzt kannst Du mit $i + 1 die Zeile in Excel adressieren.

  • egal wo ich es platziere im Script, als Ergebnis gibt er mir Y raus :( ich kapier es nicht

    In meinem Codeteil

    Code
    For $i = 0 To ..
        ....
    Next

    wird die komplette eingelesene Tabelle durchsucht. $i ist dabei die Zeile (in Deinem Beispiel 26).

    Da der Index eines Array bei 0 und die Zeilennummer in Excel bei 1 beginnt, musst Du $i + 1 nehmen um die Zeile/Reihe zu ermitteln.

    Wenn Du dann die ConsoleWrite Zeile durch Deinen Code ersetzt kannst Du mit $i + 1 die Zeile in Excel adressieren.

  • Woher soll das "Y" kommen?
    Kannst Du bitte Dein Skript posten?

  • Woher soll das "Y" kommen?
    Kannst Du bitte Dein Skript posten?

    Hallo water, hier mein Script ...


    Spoiler anzeigen

    #include <Array.au3>

    #include <Excel.au3>

    #include <MsgBoxConstants.au3>

    Local $oExcel = _Excel_Open(True)

    If @error Then Exit MsgBox($MB_SYSTEMMODAL, "Excel UDF: _Excel_RangeFind Example", "Error creating the Excel application object." & @CRLF & "@error = " & @error & ", @extended = " & @extended)

    Local $oWorkbook = _Excel_BookOpen($oExcel, "C:\Users\hfrommon\Documents\search.xlsm")

    Global $sConcern = "C14416821"

    Global $sSelected = "UC-F01/2"

    Global $sRow = ""

    Global $aData = _Excel_RangeRead($oWorkbook) ; Komplettes Worksheet einlesen, inkl Headerlines

    ;_ArrayDisplay($aData)


    For $i = 0 To UBound($aData) - 1 ; Kompletten Array durchlaufen und Suchargument 1 suchen

    If $aData[$i][0] = $sConcern Then


    If $aData[$i][1] = $sSelected Then ; Suchargument 2 vergleichen. Wenn gefunden

    For $j = 2 To UBound($aData, 2) - 1 ; alle Spalten rechts davon verarbeiten

    $sRow &= $aData[$i][$j] & "|" ; mit | als TrennzeichenWenn verknüpfen

    Next

    ConsoleWrite($sRow & @CRLF) ; und auf Konsole ausgeben

    $sRow = ""


    $zeile = _Excel_ColumnToLetter($i + 1); Wenn Suchargument 1 gefunden

    ConsoleWrite($zeile & @CRLF)

    EndIf

    EndIf

    Next

    ;_Excel_BookClose ( $oWorkbook , True )

    ;_Excel_Close($oExcel, Default, True)


  • Code
    $zeile = _Excel_ColumnToLetter($i + 1); Wenn Suchargument 1 gefunden

    muss

    Code
    $zeile = $i + 1; Wenn Suchargument 1 gefunden

    denn das Ergebnis soll ja die Zeilennummer sein und die sind numerisch.

  • :)