Wie suche ich Spalten in Excel?

  • Hallo zusammen,

    wie kann ich den Suchbereich für einen Suchbegriff eingrenzen?

    Ich habe eine Tabelle und wollte zunächst alle Spalten löschen, die in der Zeile 3 eine Zahl beinhalten.

    Ich fange also mal ganz einfach an und kopiere das Beispiel aus der Hilfe, es soll nach dem Wert 15 gesucht werden:


    Mit der auskommentierten Zeile ;~ Local $aResult = _Excel_RangeFind($oWorkbook, "15") funktioniert es. Ich bekomme ein Array mit mehreren Adressen angezeigt, u.a. auch $P$3 - das ist die gesuchte Spalte.

    Aber ich bekomme auch noch weitere Zellen zurück und wollte daher die Suche auf die dritte Zeile eingrenzen.

    Versuche ich es hingegen mit der anderen Zeile Local $aResult = _Excel_RangeFind($oWorkbook, "15", "A3:AZ3") bekomme ich nur ein leeres Array angezeigt.

    Worin besteht mein Denkfehler?

    Zusatzfrage:

    Kann ich auch einfach nach allen Zahlen wie mit dem RegEx Ausdruck [0-9]* suchen? Ich möchte alle Spalten löschen, bei denen die Zelle in der dritten Zeile eine Zahl beinhaltet.

    Danke!

  • Wenn Du den Range mit "A3:AZ3" angibst, dann wird das aktive Worksheet durchsucht.
    Bleibt der Range leer, dann werden alle Worksheets durchsucht.

    Ich vermute daher, dass das Worksheet, das Du durchsuchen möchtest, nicht das aktive ist.

    Gib beim Range daher einfach das zu durchsuchende Worksheet an z.B. $oWorkbook.Sheets(<Nummer oder Name des Worksheets>).Range("A3:AZ3")

  • Excel unterstützt standardmäßig keine RegEx Ausdrücke - aber mit Tricks scheint es zu funktionieren (habe es aber selbst nicht ausprobiert):

    Excel Regex: match strings using regular expressions - Ablebits.com

  • So gesehen schon ;)

  • Da VBA standardmäßig dazu gehört - eigentlich doch.

    Wobei sich mir immer wieder die Frage stellt, wieso man nicht direkt VBA nutzt statt AutoIt. Irgendwer muss ja die ganzen Excelsheets füllen, oder machen das die Leute alle "von Hand"? Und ja, das ist eine rhetorische Frage, 99% alle Excel-User tippern die Daten von Papierzetteln ab, oder kopieren oder schreiben aus andern Tabellen ab... :Face:

    Ein typisches XY-Problem:"...ich bekomm es in Excel nicht hin, also frag ich mal im Autoit-Forum, wie die das machen würden."

    Ich schätze diejenigen Excel.au3-Anwender, die die Daten aus Excel in anderen Programmen (NICHT AutoIt(!)) verwenden, auf unter 1%.

    Bei mir ist das genau umgekehrt, ich nutze in Excel zu 99% VBA und AutoIt nur, wenn Daten aus Excel in andere Software "eingetragen" werden muss. Aber selbst diese Scripte werden dann von VBA gesteuert.

  • Andy: Das kommt natürlich drauf an. Beispiel: Ich fülle (nicht mit Autoit) eine Excel Tabelle mit div. Daten in verschiedenen Tabellenblättern autom. nach bestimmten Programmaufrufen. Ja, das könnte man auch in eine DB packen aber ich möchte die Datei direkt öffnen und im Zweifelsfall filtern und notfalls sogar drucken können.

    Da ist es besser das über ein externes Programm gemacht wird. Auch da Excel dann nur zum speichern/laden gebraucht wird und nebenbei ohne Beeinträchtigung genutzt werden kann (jede weitere offene XLSX Datei verlangsamt Excel enorm wenn komplexe Formeln verwendet werden).

  • "Wobei sich mir immer wieder die Frage stellt, wieso man nicht direkt VBA nutzt statt AutoIt. Irgendwer muss ja die ganzen Excelsheets füllen, "

    In diesem Fall ist es ein Export aus einem Zeiterfassungssystem, welches die Listen nur in dieser Weise liefert. Hier gibt es keine Möglichkeit, auf die Ausgabe Einfluss zu nehmen.

    Die Listen müssen nachträglich automatisch angepasst werden, nachdem diese in einem Ordner eintreffen. Ich habe keine Ahnung, wie ich das mit VBA machen würde.

    Im Grunde geht es mir darum, die Tabellen so umzubauen, dass ich mit Power BI die passenden Berichte zaubern kann.

    Ich weiß: Im Grunde ist das überflüssig, denn eigentlich könnte man diese Tabellen wohl auch in Power BI transformieren.

    Nur stehe ich da ganz am Anfang und habe nicht die Zeit, das eigentlich nötige Verständnis in mein Hirn zu bringen.