$sRow &= $sRow & $aData[$i][$j] & "|" ; mit | als TrennzeichenWenn verknüpfen
sollte eher
$sRow &= $aData[$i][$j] & "|" ; mit | als TrennzeichenWenn verknüpfen
sein
Ja natürlich - das kommt von C&P ohne Korrekturlesen....
$sRow &= $sRow & $aData[$i][$j] & "|" ; mit | als TrennzeichenWenn verknüpfen
sollte eher
$sRow &= $aData[$i][$j] & "|" ; mit | als TrennzeichenWenn verknüpfen
sein
Ja natürlich - das kommt von C&P ohne Korrekturlesen....
Excel durch einen Array ersetzt, Excel-spezifische Zeilen auskommentiert. Skript getestet und läuft:
#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 = "C14435440"
Global $sSelected = "UC-L01"
Global $sRow = ""
Global $aData[][] = [["C14483040", "UC-L03", 1, 2, 3], ["C14435440", "UC-L01", 11, 12, 13, 14]]
;~ 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 ; Wenn Suchargument 1 gefunden
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 = $sRow & $aData[$i][$j] & "|" ; mit | als TrennzeichenWenn verknüpfen
Next
ConsoleWrite($aData[$i][0] & "|" & $aData[$i][1] & "|" & $sRow & @CRLF) ; Concern, Model-Nr und alle anderen Spalten und auf Konsole ausgeben
$sRow = ""
EndIf
EndIf
Next
Alles anzeigen
BTW: Die Art der Verknüpfung von Strings ist nicht relevant.
Okay, danke, versuche es jetzt mal umzusetzen und in mein "eigentliches" Script einzubauen - erst mal vielen vielen Dank an Alle - TOP !!
Ich lasse den Beitrag noch offen - für alle Fälle
Excel durch einen Array ersetzt, Excel-spezifische Zeilen auskommentiert. Skript getestet und läuft:
AutoItAlles 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 = "C14435440" Global $sSelected = "UC-L01" Global $sRow = "" Global $aData[][] = [["C14483040", "UC-L03", 1, 2, 3], ["C14435440", "UC-L01", 11, 12, 13, 14]] ;~ 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 ; Wenn Suchargument 1 gefunden 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 = $sRow & $aData[$i][$j] & "|" ; mit | als TrennzeichenWenn verknüpfen Next ConsoleWrite($aData[$i][0] & "|" & $aData[$i][1] & "|" & $sRow & @CRLF) ; Concern, Model-Nr und alle anderen Spalten und auf Konsole ausgeben $sRow = "" EndIf EndIf Next
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
#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 ; Wenn Suchargument 1 gefunden
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 = ""
EndIf
EndIf
Next
;_Excel_BookClose ( $oWorkbook , True )
;_Excel_Close($oExcel, Default, True)
Alles anzeigen
$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 ...
$zeile = _Excel_ColumnToLetter($i + 1)
ConsoleWrite($zeile & @CRLF)
In meinem Codeteil
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
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 ...
#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)
das war ja einfach vielen vielen Dank Water