Wstawianie funkcji do funkcji - excel


(Pawilojc) #1

poszukuję rozwiązania takiego problemu:

potrzebuję sprawdzić, czy przedostatnia cyfra z jedenastocyfrowej liczby jest parzysta czy nieparzysta.

spróbowałem tak:

=JEŻELI(MOD(ZAOKR.DÓŁ(A5;-1);4)=0;"parzysta";"nieparzysta")

czyli sprawdzam, czy liczba zaokrąglona do dziesiątego miejsca po przecinku w dół jest podzielna przez cztery

i wyskakuje błąd

wydaje mi się, że chodzi o obecność funkcji ZAOKR.DÓŁ w funkcji MOD

więc pytanie: jak tak ją tam wstawić, żeby grało?

P.S. kiedy próbowałem wstawić funkcję ZAOKR.DÓŁ do innej komórki a w MOD wstawić zawartość tej innej komórki to też nie działało

office 2003


(Jharla) #2

:idea: dlaczego chcesz dzielić przez 4 skoro parzyste dzielą się przez 2

=JEŻELI(ZAOKR(A5/2;0)*2=A5;"parzysta";"nieparzysta")

no chyba ze szukasz lat przestępnych to wtedy przez 4

=JEŻELI(ZAOKR(A5/4;0)*4=A5;"przestępny";"nieprzestępny")


(Spam) #3

Z tego, co pamiętam, Excel ma funkcję ISEVEN i ISODD.

Aby pobrać przedostatnią cyfrę, musiałbyś potraktować liczbę jako tekst, pobrać z niego dwa ostatnie znaki funkcją PRAWY, i z wyniku pobrać pierwszy znak (na tym etapie masz już większą dowolność w wyborze funkcji – np. LEWY, PRAWY, FRAGMENT.TEKSTU; to kwestia przejrzystości zapisu). Czyli znak wybierasz na przykład tak:

=LEWY(PRAWY(A5;2); 1)

Zatem:

=JEŻELI(ISEVEN(LEWY(PRAWY(A5;2); 1)); "parzysta"; "nieparzysta")

Dobrze byłoby sprawdzać, czy mamy do czynienia z liczbą całkowitą (albo w formule, albo za pomocą narzędzi Excela).


(Pawilojc) #4

juurek ,

chcę podzielić przez cztery, bo chcę sprawdzić czy przedostatnia cyfra jest parzysta czy nie.

np. mamy liczbę 12345678932, którą zaokrąglimy do 12345678930, która jest niepodzielna przez cztery, więc przedostatnia cyfra jest nieparzysta

a 12345678962 zaokrągli się do 12345678960, która dzieli się przez cztery, więc przedostatnia cyfra jest parzysta

Wasacz ,

dzięki, ale wyświetlił mi się błąd, poszukałem, i znalazłem -> ISEVEN - Excel - Microsoft Office Online, z czego wynika, że ISEVEN działa tylko z dodatkiem Analysis ToolPak. A zależy mi na tym, żeby działało wszędzie.

Liczby na pewno są całkowite, ale pomyślę nad tym.


(Jharla) #5

:arrow: ale po co zaokrąglać jakoś tak dziwnie, wychodzi na to ze ostatnia cyfra jest nie potrzebna

zaokrąglenie (te trochę dziwne) =ZAOKR(A5/10;0)*10

apozostanę przy swoim parzyste dzielą się przez 2 ... ewentualnie dla przedostatniej cyfry przez 20

=JEŻELI(ZAOKR(ZAOKR(A5/10;0)/2;0)=ZAOKR(A5/10;0)/2;"parzysta";"nieparzysta")


(Pawilojc) #6

no właśnie nie jest potrzebna

pomyślałem o tym FRAGMENT.TEKSTU i zrobiłem

=JEŻELI(MOD(FRAGMENT.TEKSTU(A5;10;1);2)=0;"parzysta";"nieparzysta")

problem rozwiązany i to na 3 sposoby!

dzięki!


(Jharla) #7

:!: ale fragment tekstu porównujesz z liczbą ... mogą być kłopoty

a rozwiązań jest wiele

=JEŻELI(ZAOKR(KOD(FRAGMENT.TEKSTU(A5;10;1))/2;0)=KOD(FRAGMENT.TEKSTU(A5;10;1));"parzyste";"nieparzyste")


(Spam) #8

juurek: Liczba całkowita jest rzutowana na string. Nie będzie problemu. Poza tym wydaje mi się to wydajniejsze, niż wykonywanie obliczeń dla każdej liczby.

quasx: Moim zdaniem lepiej liczyć od końca, bo jeśli będziesz miał liczbę 10-, albo 12-cyfrową, to formuła przestanie działać :wink: