2015-03-25 9 views
5

Użyłem funkcji VLOOKUP do znalezienia wartości w tablicy, ale niektóre z wartości dały odpowiedź # N/A pomimo dostępności w tablicy.WYSZUKAJ.PIONOWO nie znajduje wartości w tablicy

zaokrąglić w górę liczb, użyłem CEILING funkcję, ale ciekawe jest to, w pewnych wartości, to nie działa.

Sprawdziłem typ wartości, czy jest to liczba, czy nie.

Również użyłem funkcji ROUNDUP, ale nie zadziałał.

Również próbowałem kombinację INDEX/MATCH i znowu nie działa.

W przykładzie, który podałem w linku, gdy wpisuję między 15.00 - 15.20, daje błąd, ale próbuje innych wartości, to działa.

Jak to naprawić?

Odpowiedz

3

Wydaje się to być błąd z VLOOKUP i MATCH używając zwracanych wartości CEILING. Jeśli używasz:

=VLOOKUP(ROUND(CEILING(F4,0.1),1),A:B,2,FALSE)

to działa zgodnie z oczekiwaniami.

Jeśli spojrzymy na to z VBA, zobaczymy, co się stanie. Do winy powinno być naprawdę CEILING i ROUNDUP. Zobacz przykład:

Sub testCeilingAndRoundup() 

Dim v As Double, test As Boolean, diff As Double 

v = [CEILING(15.1,0.1)] '15.1 
test = (v = 15.1) 'FALSE 
diff = 15.1 - v '-1.776...E-15 

v = [ROUNDUP(15.25,1)] '15.3 
test = (v = 15.3) 'FALSE 
diff = 15.3 - v '1.776...E-15 

End Sub 
+0

Tak, to naprawdę działa. Dziękuję Ci. –

0

Twoja funkcja CEILING powinny być bardziej precyzyjne, jeśli chcesz znaleźć dopasowanie dla 15,10

go zmienić na CEILING(F4,0.01) i będzie działa :)

+0

zawiedzie to jeśli wejście jest na przykład 15.09. Intencją jest oczywiście zaokrąglenie tego do 15.10 i powrót 95, ale twoja formuła daje błąd. –

+0

Ponadto, nie rozumiem * dlaczego * 'CEILING (15.10,0.1)' i 'CEILING (15.10,0.01)' zachowywałby się inaczej (chociaż testy pokazują, że tak). Obaj powinni zwrócić dokładnie tę samą liczbę, tj. 15.1. Więc nie rozumiem, dlaczego zasugerowałeś tę odpowiedź! –

+0

'SUFITY (15,10, 0,1)' i 'SUFITY (15,10, 0,01)' są takie same. Nie ma różnicy. –

4

Wygląda na to, że wystąpił błąd w programie Excel.

Stosując CEILING z liczbą 15,1 powinna powrócić dokładnie ten sam wynik (15,1), niezależnie od tego, czy znaczenie jest 0,1, 0,01, 0,001, itp

I rzeczywiście tak jest, według Excel: pytany, czy jest równy, odpowiedź zawsze jest TRUE.

Ale wyszukiwanie tych matematycznie równych liczb w tabeli przeglądowej daje różne wyniki.

enter image description here

To musi być błąd.

Zamiast CEILING(F4,0.1), proponuję użyć ROUNDUP(F4,1), który wydaje się być wolny od błędów. Nope, ROUNDUP jest również wadliwy. Axel Richter's answer sugeruje zawijanie CEILING w ROUND i wydaje się, że problem znika.Można również konwertować do sznurka i powrót do numeru:

VALUE(TEXT(ROUNDUP(F4,1),"0.0")) 

tak musiałbyś

=VLOOKUP(VALUE(TEXT(ROUNDUP(F4,1),"0.0")),A:B,2,FALSE) 
Powiązane problemy