2016-06-24 2 views
1

Ich möchte in zwei kleinen Bereichen auf einem anderen Blatt nach Zeilen mit einer bestimmten Zeichenfolge suchen und dann eine Spalte aus den Ergebnissen und entfernen Drucke sie in einer Liste aus.Wenn zwei Filter in einem Zellenfeld verwendet werden, wird ein Fehler ausgelöst, wenn ein Filter keine Übereinstimmungen hat.

Hier ist mein Code:

={FILTER(FILTER(General!A6:D, SEARCH("Kevin's Credit",General!D6:D)), {TRUE, TRUE, TRUE, FALSE}); FILTER(FILTER(General!K6:N, SEARCH("Kevin's Credit",General!N6:N)), {TRUE, TRUE, TRUE, FALSE})} 

Wenn beide Bereiche die Zeichenfolge zumindest einmal alle Zeilen ausgedruckt werden, die es haben. Wenn es nicht einmal in einem Bereich vorhanden ist, wird weder gedruckt noch wird ein Fehler angezeigt.

Fehler in ARRAY_LITERAL, ein Array Literal fehlte Werte für eine oder mehrere Zeilen.

Was muss ich tun, um das Problem zu beheben?

Antwort

1

Das Problem bei einer Konstruktion wie

={filter(A:B, B:B > 5); {true, false}} 

das heißt, wenn es keine Zeilen passen zum Kriterium B: B> 5, das Array ausgewertet

={#N/A; {true, false}} 

wobei # N/A besetzt eine einzelne Zelle. Dies ist ein fehlerhaftes Array mit einer Zelle in der ersten Reihe und zwei in der zweiten Reihe.

Sie können umgehen, indem Sie ein einzelnes # N/A durch mehrere ersetzen, um die entsprechende Anzahl von Spalten in jedem Fall zu haben.

={iferror(filter(A:B, B:B > 5), {na(), na()}; {true, false}} 

Natürlich kann hier auch etwas anderes als na() verwendet werden.

Auch in Ihrem speziellen Fall brauchen Sie nicht die Zeile mit True-False-Werten und den äußeren Filter von ihnen. Nur nicht Spalten D oder N in erster Linie ist:

={filter(General!A6:C, search("Kevin's Credit", General!D6:D)); filter(General!K6:M, search("Kevin's Credit", General!N6:N))} 

oder in der # N/A-sichere Form,

={iferror(
    filter(General!A6:C, search("Kevin's Credit", General!D6:D)), 
    {na(), na(), na()}); 
    iferror(
    filter(General!K6:M, search("Kevin's Credit", General!N6:N)), 
    {na(), na(), na()}) 
} 

Das zweite Argument des Filterbefehls kann getrennt sein vom ersten; Wichtig ist nur, dass sie die gleiche Anzahl von Zeilen haben.

+0

Danke für die Hilfe. Diese Lösung bringt mich nahe, aber hinterlässt eine Reihe von #NA-Zellen, die nicht ideal ist. Ich dachte mir, ich könnte die Reihe leer machen, indem ich '{na(), na(), na()}' mit '{" "," "," "}' verberge, aber das lässt eine leere Reihe übrig, wenn der erste Filter hat Keine passenden Ergebnisse. Kannst du mir helfen, die Zeile komplett wegzulassen, damit ich das aufräumen kann? –

+1

Vielleicht wickle die Formel in '= query (...," wähle Col1 <> '' ")' ', vorausgesetzt, dass die erste Spalte der resultierenden Sache nicht leer sein kann. Oder verwenden Sie etwas wie 'Col1 <> 'NO_RESULTS'', wobei NO_RESULTS ein String ist, den Sie anstelle von n/a setzen. –

Verwandte Themen