array in worksheetfunction - Synthax?

  • Excel

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von ereza.

    array in worksheetfunction - Synthax?

    Hallo liebe Community!

    Ich würde gerne, bei der WorksheetFunction "Match" über 2 Suchkriterien suchen lassen....

    Also aussehen sollte es so.... (Pseudocode):


    ordnezu = WorksheetFunction.Match(Auftragsnummer_aktuell & EBELN_aktuell, Tabelle13.Range(Tabelle13.Cells(1, 35), Tabelle13.Cells(d, 35)) & Tabelle13.Range(Tabelle13.Cells(1, 37), Tabelle13.Cells(d, 37)), 0)


    Kann mir einer von euch sagen, wie ich das richtig in VBA schreiben muss damit es Excel kapiert?

    und....

    was für ein Datentyp muss "ordnezu" dann haben??


    Vielen Dank!

    LG Tim
    Hi.

    Also ich geh auf deine erste Frage mal nicht näher ein weil ich mich da nicht reindenken mag, aber zu deiner zweiten Frage und womöglich vielen noch folgenden Fragen und vermutlich vielen auch schon gestellten Fragen.

    was für ein Datentyp muss "ordnezu" dann haben??​


    Markiere mal das Wort WorksheetFunction und drück dann entweder F2 oder Rechtsklick -> Definition.

    Das ist der VBA Object Browser, dort findest du alle Methoden und Klassen und Felder und deren Datentypen zu ALLEN geladenen Bibliotheken. Dort kannst du sogar suchen. Freunde dich damit an, ist sehr hilfreich

    LG
    Das ist meine Signatur und sie wird wunderbar sein!
    WorksheetFunction.Match gibt ein Double zurück.
    Letztendlich kann es jedoch nur ganze Zahlen beinhalten, so dass du auch ein Long nehmen könntest.

    Ich würde jedoch mit der direkten VBA-Funktion Find arbeiten.

    ereza schrieb:

    über 2 Suchkriterien
    kannst du mit keiner der beiden Funktionen suchen.
    Wenn es eine UND-Verknüfung sein sollt, dann nimm eine Hilfsspalte mit dem kombinierten Index der zu durchsuchenden Spalten.
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --
    ok danke für den Tipp mit dem Objekt Browser!

    wegen dem ersten Punkt...

    mir geht's ja wirklich nur rein um die Schreibweise...

    weil... im Excel kann man ja auch eine die VERGLEICH Funktion mit mehreren Suchkriterien verwenden...

    sieht ja dann so aus: {=VERGLEICH("Suchkriterium1"&"Suchkriterium2";"Suchbereich1"&"Suchbereich2";0)}

    das funktioniert ja auch....

    nur müsst ich halt wissen, wie man das in VBA mit einer Worksheetfunction umsetzt... weil... wenn ich über den Makro-Rekorder es aufzeichne... weiß ich schon mal wie er das mit FormulaArray macht....

    aber das dann bei Worksheetfunction umzusetzen... um das geht es mir eigentlich schlussendlich... ;)



    NACHTRAG:

    @petaod - danke für deinen Post!

    hmm... aber warum geht das nicht? - weil eben... wenn ich ganz normal eine Formel im Excel mit VERGLEICH und 2 Suchkriterien eingebe... dann spuckt der mir ja was aus... und das ist sogar richtig...
    jz dachte ich mir... dass wenn das über FormulaArray geht... ja dann eigentlich auch die Worksheetfunction.Match können müsste oder?

    und sonst... meinst du einfach... dass ichs mir das über eine Hilfsspalte ausgeben lassen soll... praktisch...? oder?
    WorksheetFunction gibt keine Array-Formel zurück.
    Das umwandeln in eine Array-Formel erfolgt bei der Zuweisung an die .FormulaArray-Eigenschaft einer Zelle.
    Du kannst eine Hilfszelle als Ergebniszelle definieren, wo du die Array-Formel einträgst.

    Ansonsten kannst du auch mal mit Evaluate spielen, das könnte funktionieren.

    Ich warne allerdings bei größeren Sheets vor der Verwendung von Array-Formeln.
    Das kann ziemlich in die Performance gehen, weil das Array für das komplette Sheet berechnet wird.
    Da ist vermutlich eine VBA-Kombination aus Find/FindNext und direktem Lookup der zweiten Zelle schneller.
    Da kannst du bei der ersten gefundenen Kombination aus der Suche aussteigen.

    Edit: Bei Sheets mit mehr als 65535 Zeilen funktioniert eine Arrayformel im übrigen auch nicht mehr.
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --