Czy w programie Excel mogę podać „wartość domyślną” w przypadku, gdy moja formuła zwraca #NA?

23

Na przykład,

Powiedzmy, że wartość komórki to:

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))

Tutaj chcę produkt dwóch WYSZUKAJ.PIONOWO. Ale niektóre wiersze mogą nie być dostępne, więc może zwrócić NA. Jeśli zwraca NA, po prostu wpisz zero w tej komórce, ale w przeciwnym razie chcę produkt.

Wydaje się głupie, że musiałbyś mieć dwa razy cały ten wyraz. Czy jest jakiś skrót, w którym mogę powiedzieć „wykonaj te obliczenia, a jeśli zwróci wartość, skorzystaj z niej, ale w przeciwnym razie skorzystaj z wartości domyślnej?

Jer
źródło
Nie jestem pewien, jak to zrobić poprawnie, ale spójrz tutaj mrexcel.com/td0110.html Ostatni przykład powinien pomóc
chmod
Twoja formuła jest idealna, nie jestem pewien, jaki skrót chcesz. Możesz zdefiniować funkcję zdefiniowaną przez użytkownika, ale spowoduje to, że będzie ona krótsza, a nie bardziej zaangażowana.
Raystafarian,

Odpowiedzi:

38

Jeśli masz program Excel 2007 lub nowszy, możesz użyć funkcji JEŻELI, aby uniknąć powtórzeń

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

lub możesz użyć takiego obejścia we wcześniejszych wersjach

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

Barry Houdini
źródło
Ten pierwszy przykład jest dokładnie tym, czego szukam. Dzięki!
Jer
5

Może to mieć dla ciebie większy sens, jeśli sprawdziłeś pierwszą wartość wyszukiwania dla NA, a następnie sprawdziłeś drugą, a jeśli oba są prawidłowe, pomnóż je.

=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))

Zwiększa to złożoność, ale może nie obrażać delikatnej wrażliwości programisty. ;-)

Nathan DeWitt
źródło