2016-05-03 3 views
1

I folgende Abfrage erzeugt habeExcel Spiel Funktion Behandlung nicht richtig Array Argumente

=MATCH(TRUE, ISNUMBER(SEARCH({"a","b","c","d"}, "b")), 0) 

es den Wert 2, weil b zweites Argument in Array { "a", "b", "c", "d"} aber wenn ich fest codierten Arrays mit Daten ersetzen Bereich, dh

=MATCH(TRUE, ISNUMBER(SEARCH(A1:A4, "b")), 0) 

Abfrage liefert # N/A einmal gedacht A1 a enthält, A2 b enthält, A3 enthält, c und d enthält A4.

Warum es nicht funktioniert und wie man es repariert? Ich benutze die Suchfunktion, weil ich nach "Fuzzy Matches" suche, möglicherweise mit Wildcards, die nicht genau sind (dann würde ich Vlookup verwenden).

Ich benutze Excel 365 online.

Edit: Nach ein wenig Experimentieren drehte es, dass

=SEARCH(A1:A2, "a") 

kehrt #value out! obwohl

= SEARCH ({ "a", "b"}, "a")

kehrt 1. Wie kann ich das Problem beheben Ergebnis möchte ich zu bekommen?

+0

Siehe meine Bearbeitung .................... –

Antwort

1

Das Büro App online nur die grundlegendsten Formeln ermöglicht, so dass keine CSE Matrixformeln.

Warum eine Version Ihrer Formel die Strg-Umschalt-Eingabe erfordert und die andere nicht, ist das Design der Funktion. Da die meisten von uns die SUCHE-Funktion nicht entworfen haben, ist es schwer zu beantworten, warum.

Es gibt Array-Funktion, die nicht Ctrl-Shift-Enter erfordern.

Für die Online-Version werden Sie die Aggregate() Funktion verwenden:

=AGGREGATE(15,6,ROW(1:4)/ (ISNUMBER(SEARCH(A1:A4, "b"))), 1) 

Oder könnten Sie SUMPRODUCT():

=SUMPRODUCT((ROW(A1:A4))*(ISNUMBER(SEARCH(A1:A4,"b")))) 

Dies wird die Zeile zurück:

enter image description here

+0

Können Sie erklären, warum die Funktion mit sumproduct funktioniert, obwohl sie dieselbe Suchformel verwendet, die für mich wie Täter aussieht? – Trismegistos

+0

Das Sumproduct zwingt durch sein Design die Search-Funktion, durch jede Zelle im Bereich zu iterieren und gibt alle Zeilen zurück, in denen diese wahr sind. Weil nur eins wahr ist, gibt es die Summe einer Zeile zurück. Wenn Sie "b" in A4 setzen, wird "6" zurückgegeben. Das Aggregat macht dasselbe, gibt aber nur die unterste Zeilennummer zurück. –

+0

Als Programmierer ist es schwer für mich zu erfassen, wie externe Funktion (Summenprodukt) interne (Suche) zwingen kann, etwas anderes zu tun. Auch ich habe Dokumentation für beide Funktionen gelesen, und ich habe nichts über solche Fähigkeiten der Summenproduktfunktion gefunden. Gibt es eine andere Funktion, die ein solches Verhalten erzwingen kann? Wo kann ich mehr darüber lesen? – Trismegistos

0

Sie benötigen eine Matrixformel:

enter image description here

Array Formeln mit Ctrl +Umschalttaste eingegeben werden muss Schlüssel + Geben Sie nicht nur die eingeben.

Ein weiterer Ansatz ist die Verwendung:

=MATCH("b",A1:A4,0) 
+0

Warum brauche ich arr ay Formel?Match gibt einen einzelnen Wert aus dem gesamten Array zurück, das der zweite Parameter ist. Auch für die erste Version brauche ich keine Array-Formel, obwohl ich ein Array hatte. Und letzte ctrl-shift-enter funktioniert nicht in Excel Online. – Trismegistos

+0

@Trismegistos Dann verwenden Sie die viel einfachere: ** = MATCH ("b", A1: A4,0) ** siehe meine Bearbeitung –

+0

Ich brauche Platzhalter in A1 bis A4, so dass MATCH nicht allein arbeiten. – Trismegistos