Strona 1 z 1
Proszę o pomoc w sprawdzeniu składni formuły...
: wt wrz 29, 2015 4:41 pm
autor: Horpah
Witajcie.
Mam dość duży problem. Moja macierzysta firma zaimplementowała nowy formularz zamówienia, oczywiście zrobiony w excelu... W dodatku był zablokowany i nie można było podejrzeć formuł. Ale ubłagałem, żeby specjalnie dla mnie odblokowali ten plik. I mam rozblokowany. Z przyczyn oczywistych nie mogę pokazać całego (zabiliby mnie chyba
)
Kod: Zaznacz cały
=iferror(iferror(iferror(iferror(iferror(WYSZUKAJ.PIONOWO(B16;$'Cennik Marketing'.A$1:B$1048576;2;0);WYSZUKAJ.PIONOWO(B16;$'Cennik ATRA'.A$1:B$1048576;2;0));WYSZUKAJ.PIONOWO(B16;$'Cennik JGA'.B$1:C$1048576;2;0));WYSZUKAJ.PIONOWO(B16;$' Cennik SCAN'.B$1:C$1048576;2;0));WYSZUKAJ.PIONOWO(B16;$'Cennik JOTUL'.B$1:C$1048576;2;0));"")
to kuriozum zgłasza błąd #N/D
Myślałem, że wystarczy zmienić iferror na CZY.BŁĄD:
Kod: Zaznacz cały
=CZY.BŁĄD(CZY.BŁĄD(CZY.BŁĄD(CZY.BŁĄD(CZY.BŁĄD(WYSZUKAJ.PIONOWO(B16;$'Cennik Marketing'.A$1:B$1048576;2;0);WYSZUKAJ.PIONOWO(B16;$'Cennik ATRA'.A$1:B$1048576;2;0));WYSZUKAJ.PIONOWO(B16;$'Cennik JGA'.B$1:C$1048576;2;0));WYSZUKAJ.PIONOWO(B16;$' Cennik SCAN'.B$1:C$1048576;2;0));WYSZUKAJ.PIONOWO(B16;$'Cennik JOTUL'.B$1:C$1048576;2;0));"")
Ale nie. Zgłasza błąd 508.
TO może jeszcze co ta formuła powinna robić (i co robi w excelu bezbłędnie i działa nawet w excelu online).
W B16 wpisuje się kod produktu. I wtedy formuła ma znaleźć dany produkt w jednym z podarkuszy. Jak nie znajdzie w jednym to przechodzi do następnego itd. Jak nie znajdzie w ogóle to zwraca wartość zerową.
Proszę o pomoc. Będę zobowiązany bardzo. Myślę że tu gdzieś problem w różnicy składni między exelem a OOO Calc... ale tego drugiego nie znam jeszcze tak dobrze.
Pozdrawiam
Dawid
Re: Proszę o pomoc w sprawdzeniu składni formuły...
: wt wrz 29, 2015 5:48 pm
autor: j59
spróbuj JEŻELI.BŁĄD
Re: Proszę o pomoc w sprawdzeniu składni formuły...
: wt wrz 29, 2015 6:44 pm
autor: Horpah
Ja szukałem właśnie takiej funkcji ale znalazłem tylko CZY.BŁĄD
Re: Proszę o pomoc w sprawdzeniu składni formuły...
: wt wrz 29, 2015 7:07 pm
autor: Horpah
Jeszcze post scriptum do mojego posta.
Okazuje się że ta formuła orygnialnie wyglądała inaczej.
Kod: Zaznacz cały
=_xlfn.IFERROR(_xlfn.IFERROR(_xlfn.IFERROR(_xlfn.IFERROR(_xlfn.IFERROR(WYSZUKAJ.PIONOWO(B16;$'Cennik Marketing'.A$1:B$1048576;2;FAŁSZ());WYSZUKAJ.PIONOWO(B16;$'Cennik ATRA'.A$1:B$1048576;2;FAŁSZ()));WYSZUKAJ.PIONOWO(B16;$'Cennik JGA'.B$1:C$1048576;2;FAŁSZ()));WYSZUKAJ.PIONOWO(B16;$' Cennik SCAN'.B$1:C$1048576;2;FAŁSZ()));WYSZUKAJ.PIONOWO(B16;$'Cennik JOTUL'.B$1:C$1048576;2;FAŁSZ()));"")
W pierwszym poście wklejałem z OneDrive - już pewnie ten excel online ją zmodyfikował. Ale to nie zmienia faktu że działała w excelu online.
ta formuła to już zupełnie magicznie dla mnie wygląda...
Re: Proszę o pomoc w sprawdzeniu składni formuły...
: wt wrz 29, 2015 7:36 pm
autor: Horpah
Spróbowałem zamienić każde CZY.BŁĄD na JEŻELI(CZY.BŁĄD) pilnując nawiasów żeby się zgadzały z oryginałami.
Kod: Zaznacz cały
=JEŻELI(CZY.BŁĄD(JEŻELI(CZY.BŁĄD(JEŻELI(CZY.BŁĄD(JEŻELI(CZY.BŁĄD(JEŻELI(CZY.BŁĄD(WYSZUKAJ.PIONOWO(B16;$'Cennik Marketing'.A$1:B$1048576;2;0);WYSZUKAJ.PIONOWO(B16;$'Cennik ATRA'.A$1:B$1048576;2;0)));WYSZUKAJ.PIONOWO(B16;$'Cennik JGA'.B$1:C$1048576;2;0)));WYSZUKAJ.PIONOWO(B16;$' Cennik SCAN'.B$1:C$1048576;2;0)));WYSZUKAJ.PIONOWO(B16;$'Cennik JOTUL'.B$1:C$1048576;2;0)));""))
i znów błąd 508
Re: Proszę o pomoc w sprawdzeniu składni formuły...
: wt wrz 29, 2015 10:35 pm
autor: Jan_J
Tak to jest. Arkusze kalkulacyjne są lekkie, łatwe i przyjemne. Zakładamy firmę, robimy katalog. Potem oferta się rozrasta, więc rozbudowujemy ad hoc bazę, a z konieczności modyfikujemy formuły. Potem już trudno ogarnąć, ale działa.
W bazie danych nie byłoby iteracji po arkuszach, tylko filtrowanie tabeli. Zresztą nawet, gdyby używać iteracji zamiast wgłębnych wywołań, kod byłby prostszy, a obsługa łatwiejsza. No, ale takie konstrukcje w formułach nie są przewidziane.
Próbuj metodą małych kroków. Sprawdź towar, który leży w I arkuszu. Jeśli wtedy formuła działa, obuduj ją funkcją na okoliczność błędu. Potem w obsłudze błędu wpisz analogiczną funkcję przeszukującą w drugim arkuszu. Itd.
Funkcje _xlfn.... są częścią LibreOffice. Są używane przy otwieraniu arkuszy excelowych, żeby zapobiec niezgodnościom składni funkcji noszących takie same nazwy.
Re: Proszę o pomoc w sprawdzeniu składni formuły...
: wt wrz 29, 2015 10:43 pm
autor: Horpah
A możesz na przykładzie tego mojego kodu dać taki pierwszy mały krok? propozycję? Żebym na czymś się oparł?
Re: Proszę o pomoc w sprawdzeniu składni formuły...
: wt wrz 29, 2015 11:10 pm
autor: Jan_J
Oczywiście.
Kod: Zaznacz cały
=IFERROR(IFERROR(IFERROR(IFERROR(IFERROR(WYSZUKAJ.PIONOWO(B16;$'Cennik Marketing'.A$1:B$1048576;2;FAŁSZ());WYSZUKAJ.PIONOWO(B16;$'Cennik ATRA'.A$1:B$1048576;2;FAŁSZ()));WYSZUKAJ.PIONOWO(B16;$'Cennik JGA'.B$1:C$1048576;2;FAŁSZ()));WYSZUKAJ.PIONOWO(B16;$' Cennik SCAN'.B$1:C$1048576;2;FAŁSZ()));WYSZUKAJ.PIONOWO(B16;$'Cennik JOTUL'.B$1:C$1048576;2;FAŁSZ()));"")
Zacznij od uproszczeń. Zamiast funkcji FAŁSZ() wstaw stałą logiczną FAŁSZ albo stałą liczbową 0 (tak naprawdę arkusz nie ma wbudowanego typu logicznego).
Potem weź
Kod: Zaznacz cały
=WYSZUKAJ.PIONOWO(B16;$'Cennik Marketing'.A$1:B$1048576;2;0)
Ma dawać dobre wyniki dla wszystkiego, co leży w katalogu "Cennik Marketing" i błędy dla wszystkich innych wartości. Sprawdź, czy tak jest.
Formuła
Kod: Zaznacz cały
=IFERROR(WYSZUKAJ.PIONOWO(B16;$'Cennik Marketing'.A$1:B$1048576;2;0); "kuku")
ma dawać dobry wynik dla wszystkiego, co jest w katalogu, i słowo "kuku" jeśli nie jest.
Dalej rozbuduj frazę do
Kod: Zaznacz cały
=IFERROR(
WYSZUKAJ.PIONOWO(B16;$'Cennik Marketing'.A$1:B$1048576;2;0);
WYSZUKAJ.PIONOWO(B16;$'Cennik ATRA'.A$1:B$1048576;2;0))
Ma dawać dobre wyniki dla "Cennik Marketing", a w przeciwnym razie szukać w "Cennik ATRA". Dopiero jeśli tam nie znajdzie, generuje błąd. Teraz ponawiamy zabieg z obsługą błędu
Kod: Zaznacz cały
=IFERROR(IFERROR(
WYSZUKAJ.PIONOWO(B16;$'Cennik Marketing'.A$1:B$1048576;2;0);
WYSZUKAJ.PIONOWO(B16;$'Cennik ATRA'.A$1:B$1048576;2;0)); "kuku")
Itd.
IFERROR -> CZY.BŁĄD (chyba..., mam pod ręką tylko wydanie anglojęzyczne).
Re: Proszę o pomoc w sprawdzeniu składni formuły...
: śr wrz 30, 2015 2:01 am
autor: Horpah
Udało mi się rozwiązać tą formułę...
Dla zainteresowanych. Nie ma odpowiednika iferror. Albo na 100% nie jest to funkcja CZY.BŁĄD. Zrobiłem to przez połączenie dwóch funkcji: JEŻELI i CZY.BŁĄD.
Daję oryginalną formułę dla przypomnienia:
Kod: Zaznacz cały
=iferror(iferror(iferror(iferror(iferror(WYSZUKAJ.PIONOWO(B16;$'Cennik Marketing'.A$1:B$1048576;2;0);WYSZUKAJ.PIONOWO(B16;$'Cennik ATRA'.A$1:B$1048576;2;0));WYSZUKAJ.PIONOWO(B16;$'Cennik JGA'.B$1:C$1048576;2;0));WYSZUKAJ.PIONOWO(B16;$' Cennik SCAN'.B$1:C$1048576;2;0));WYSZUKAJ.PIONOWO(B16;$'Cennik JOTUL'.B$1:C$1048576;2;0));"")
Oraz działający odpowiednik w OOO:
Kod: Zaznacz cały
=JEŻELI(CZY.BŁĄD(WYSZUKAJ.PIONOWO(B19;$'Cennik Marketing'.A$1:B$1048576;2;0));JEŻELI(CZY.BŁĄD(WYSZUKAJ.PIONOWO(B19;$'Cennik ATRA'.A$1:B$1048576;2;0));JEŻELI(CZY.BŁĄD(WYSZUKAJ.PIONOWO(B19;$'Cennik JGA'.B$1:C$1048576;2;0));JEŻELI(CZY.BŁĄD(WYSZUKAJ.PIONOWO(B19;$' Cennik SCAN'.B$1:C$1048576;2;0));JEŻELI(CZY.BŁĄD(WYSZUKAJ.PIONOWO(B19;$'Cennik JOTUL'.B$1:C$1048576;2;0));"NIC";WYSZUKAJ.PIONOWO(B19;$'Cennik JOTUL'.B$1:C$1048576;2;0));WYSZUKAJ.PIONOWO(B19;$' Cennik SCAN'.B$1:C$1048576;2;0));WYSZUKAJ.PIONOWO(B19;$'Cennik JGA'.B$1:C$1048576;2;0));WYSZUKAJ.PIONOWO(B19;$'Cennik ATRA'.A$1:B$1048576;2;0));WYSZUKAJ.PIONOWO(B19;$'Cennik Marketing'.A$1:B$1048576;2;0))
Jeśli ktoś z was znajdzie w OOO "dokładny" odpowienik IFERROR to ozłocę
Swoją drogą wydaje się to niemożliwe, żeby w OOO nie było tej funkcji.... Najlogiczniejsze by było JEŻELI.BŁĄD ale nie ma takiej funkcji....
Re: Proszę o pomoc w sprawdzeniu składni formuły...
: śr wrz 30, 2015 2:23 am
autor: Horpah
TEMAT DO ZAMKNIĘCIA.....
Wystarczyło zmienić z OpenOffice na LibreOffice i wszystko zaczęło działać... OOO nie ma funkcji IFERROR - LO go ma i sprawnie działa.
Szkoda tylko że straciłem na to kilka godzin....
Dzięki wszystkim za pomoc