Kann ich in Excel einen „Standardwert“ angeben, falls meine Formel #NA zurückgibt?

23

Beispielsweise,

Angenommen, der Wert einer Zelle ist:

IF(ISNA(VLOOKUP(A3,somesheet!G:J,3,FALSE) * VLOOKUP(A3,someothersheet!A:D,4,FALSE)), 0, VLOOKUP(A3,somesheet!G:J,3,FALSE) * VLOOKUP(A3,someothersheet!A:D,4,FALSE))

Hier möchte ich das Produkt der beiden VLOOKUPs. Einige Zeilen sind möglicherweise nicht vorhanden, sodass NA zurückgegeben werden kann. Wenn NA zurückgegeben wird, geben Sie einfach Null in diese Zelle ein, ansonsten möchte ich das Produkt.

Es kommt mir albern vor, dass du den ganzen Ausdruck zweimal haben müsstest. Gibt es eine Verknüpfung, auf der ich sagen kann, dass diese Berechnung durchgeführt werden soll, und wenn ein Wert zurückgegeben wird, verwenden Sie diesen, aber verwenden Sie ansonsten einen Standardwert?

Jer
quelle
Ich bin mir nicht sicher, wie ich es richtig machen soll, aber schau mal hier. Mrexcel.com/td0110.html Das letzte Beispiel sollte helfen
chmod
Ihre Formel ist perfekt, ich bin mir nicht sicher, welche Verknüpfung Sie wollen. Sie können eine benutzerdefinierte Funktion definieren, die jedoch kürzer und nicht komplizierter wird.
Raystafarian

Antworten:

38

Wenn Sie Excel 2007 oder eine neuere Version haben, können Sie die IFERROR-Funktion verwenden, um Wiederholungen zu vermeiden

=IFERROR(VLOOKUP(A3,somesheet!G:J,3,FALSE)*VLOOKUP(A3,someothersheet!A:D,4,FALSE),0)

In früheren Versionen können Sie eine solche Problemumgehung verwenden

=LOOKUP(9.9E+307,IF({1,0},0,VLOOKUP(A3,somesheet!G:J,3,FALSE)*VLOOKUP(A3,someothersheet!A:D,4,FALSE)))

Barry Houdini
quelle
Das erste Beispiel ist genau das, wonach ich suche. Vielen Dank!
Jer
5

Für Sie ist es möglicherweise sinnvoller, wenn Sie den ersten Nachschlagewert für NA und dann den zweiten überprüft haben und wenn beide gültig sind, multiplizieren Sie sie.

=IF(OR(ISNA(VLOOKUP(A3,somesheet!G:J,3,FALSE)),ISNA(VLOOKUP(A3,somesheet!A:D,4,FALSE))), 0, VLOOKUP(A3,somesheet!G:J,3,FALSE) * VLOOKUP(A3,somesheet!A:D,4,FALSE))

Dies erhöht die Komplexität, beeinträchtigt jedoch möglicherweise nicht die Empfindlichkeit des Programmierers. ;-)

Nathan DeWitt
quelle