Makro - If then else

Barmen

Lt. Commander
Registriert
Feb. 2012
Beiträge
1.661
Moin miteinander,

ich habe vor ein Makro mit MakroX https://www.heise.de/download/product/macrox-92986 oder AutoHotKey https://www.heise.de/download/product/autohotkey-20763 zusammenzustellen.

Ich muss aber eine Funktion mit If then else haben. Ich hab mir die Programme noch nicht angeschaut aber wollte vorab mal fragen ob jemand Erfahrung mit der oben genannten Funktion hat.

Es geht dabei darum, dass ich 100-500 Datensätze pro Suchdurchlauf auf ein bestimmtes Merkmal durchsuchen muss und das nicht händisch machen will ... circa 10% enthalten das Merkmal welche dann anders behandelt werden sollen als die ohne Merkmal.
Die Datensätze sind auf einer Zugangs gesicherten Homepage weshalb ich keine üblichen Webscrapper nehmen kann.

Gerne könnt ihr mir aber Alternative Möglichkeiten aufzeigen.

Im Worst Case Scenario werde ich ersteinmal über Fiverr eine Person suchen die es für mich macht :-(

Thx
Dom
 
Wie denn? In Excel kopieren und dann durchsuchen oder wie?
Warum dann so umständlich? Wenn Du die Suche auf bestimmte Spalten des Datensatzes eingrenzen kannst ist es doch wahrscheinlich einfacher sich eine "Hilfsspalte" mit einer entsprechenden Funktion auszustatten und anschließend nach dieser "Hilfsspalte" zu filtern?!

Direkt auf der Webseite geht das natürlich nicht und ...ich hab zwar keine Ahnung aber ich bezweifle, dass so ein Autohotkey Werte zurück gibt.
 
Du musst den Suchbereich definieren, die Zellinhalte aus selbigem als String definieren und dann mit "InString" nach dem Wert suchen. Dann kommt es darauf an, was Du machen möchtest. Kopieren, ausschneiden, Hilfspalte mit einem Kennzeichen versehen etc.

Das wird aber etwas komplizierter als bloßes If-Then-Else. Die Grundfunktion ist natürlich simpel Wenn-Dann. Wenn es aber darum geht den Bereich zu definieren und eine Aktion folgen zu lassen, wird es komplizierter. Die muss dann in einer For Each eingebaut werden.

Wie Dave schrieb, direkter Download und Import einer zugangsbeschränkten Seite, wird nicht funktionieren. Für sowas wird idR VPN benutzt, oder aber den Server als Netzlaufwerk zu Windows hinzufügen.

Stuktur Grob

For Each STRING in Cell Range.(Find )
If
InStr STRING SUCHZEICHEN > 0
Then
Aktion
Else
next
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: Barmen
@ Sun_set_1

Danke du hast mir sehr geholfen ... ich werde mich auf Basis deiner Informationen weiter mit der Thematik beschäftigen :-)

@ xdave78

leider kann ich es nicht als Excel / Access Datenbank bekommen ... Werte werden von einer dritten (unabhängigen Partei) dynamisch generiert und auf der Webseite bereitgestellt!
 
Gerne,

worauf xdave hinaus wollte ist, dass Du das alles auch einfacher in einer Hilfsspalte per Formel lösen kannst.
Wenn Beispielsweise in Spalte B die Zeichenkombination ABC gesucht wird, kann Du die Funktionen SUCHEN / FINDEN in einer Wenn Dann verschachteln. Beispielsweise:

WENN(SUCHEN(B1;"ABC")>0;"gefunden";""). Du könntest Dir so etwas als Vorlage abspeichern. Wenn Du dann die Werte kopierst, beispielsweise auf einem zweiten Tabellenblatt, wären die Ergebnisse in der Vorlage / Deckblatt umgehend sichtbar. Ebenso kannst Du über Arrays Tabellenblätter automatisiert füllen lassen.

Sprich wenn in Spalte B der Wert "ABC" gefunden wird, kopiere die ganze Reihe und füge sie auf dem Tabellenblatt "ABC" ein. Wenn DEF gefunden wird, füge sie auf dem Blatt DEF ein, usw usf. Letzteres ist ein wenig komplizierter, aber alles ohne Makro machbar :)
Ergänzung ()


Barmen schrieb:

Hier eine alte von mir:

Wichtig:

1. Array Formeln immer mit SHIFT + Enter abschließen, sonst gehts nicht.

2. Im vorliegenden Fall wird auf dem Tabellenblatt "Quelle" in Spalte B nach "ABC" gesucht.

3. INDEX / KKLEINSTE wird zum identifizieren der letzten kopierten Zeile verwendet

4. Die Formel muss auf das Tabellenblatt kopiert werden, in dem nacher die Zeile mit dem Wert ABC hinkopiert werden soll.

5. Die Formel muss in A1 auf dem Ergebnisblatt eingefügt werden. Mit Shift+Enter abschließen!
Dann nach rechts ziehen (solange wie auch die Quelle ist) und dann nach unten ziehen (so weit wie man mag / braucht).

Code:
=WENN(ZEILE(Quelle!1:1)>ZÄHLENWENN(Quelle!$B:$B;"ABC");"";INDEX(Quelle!A:A;KKLEINSTE(WENN(Quelle!$B:$B="ABC";ZEILE(Quelle!$1:$1645));ZEILE(A1))))
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: Barmen
Thx, das hilft :)
 
Zurück
Oben