Excel - jaka formuła?


(Robert Trs) #1

Poszukuje formuły która wykona działanie matematyczne (doda/odejmie/pomnoży/itp*) mi liczbę jedności do dziesiątek traktując obie równo. Czyli np. liczba 16 = 1+6 = 7

Ręczne wpisywanie do kolumn cyfr 1 i 6 odpada.


(Kstarski) #2

jeżeli Twoja liczba jest w A1 to:

=LEWY(A1;1)+PRAWY(A1;1)

jeśli masz excel w innym języku to trzeba przetłumaczyć :slight_smile:

(kto do licha wymyślił tłumaczenie formuł? :evil: )


(Robert Trs) #3

dzięki wielkie o to chodziło. temat można zamknąć


(greh) #4

A co z przypadkiem, kiedy liczba ma 3 lub więcej cyfr?

:wink:


(Robert Trs) #5

no to mam następny problem

zauważyłem że ta formula wyświetla błąd przy braku wpisania cyfry lub wpisaniu tekstu w komórkę z której pobierane są dane. chciałem to wyeliminować stosując formuły JEŻELI a dokładniej

JEŻELI(C4>=0;(LEWY(C4;1)+PRAWY(C4;1));Błędny Wpis)

Ta formuła nie działa. Ale jeżeli dam.

JEŻELI(C4>0;(LEWY(C4;1)+PRAWY(C4;1));Błędny Wpis)

To już działa ok. W tym problem że wartość musi być min 0.

A i tak przy okazji co z liczbami składającymi się z min 3 cyfr?? Jak je policzyć?? Zmiana wartości np: (LEWY(C4; 1 ) na (LEWY(C4; 2 ). Nie daje pożądanych efektów. Excel liczy z rozróżnieniem dziesiątek i jedności.


(Kstarski) #6

lewy i prawy wycina z podanego łańcucha znaków zadaną ich liczbę. jeśli chcesz wyciać coś ze środka użyj:

=FRAGMENT.TEKSTU(B1;2;1)

a dla pustego zamień to: JEŻELI(C4>=0;(LEWY(C4;1)+PRAWY(C4;1));Błędny Wpis) na to:

=JEŻELI(DŁ(C4)<2;"błędny wpis";(LEWY(C4;1)+PRAWY(C4;1)))

wtedy dla pustej komórki i dla pojedynczego znaku w C4 wyświetla się "błędny wpis"

niestety jak w C4 podasz trzy cyfrową liczbe to wynik oczywiście będzie pierwsza+ostatnia, jeżeli ma działać dla różnej długości liczby to musisz zagnieździć odpowiednią ilość JEŻELI żeby dla każdego przypadku była inna formuła. generalnie głupia sprawa :wink:


(Pm 10 000 Days) #7

Wcale nie głupia sprawa. ciekawa :slight_smile:

np tak: zlicza liczby maksymalnie 5-cio cyfrowe + obsługa błędów. Oczywiście można rozszerzyć do ilu się chce.

=JEŻELI(ORAZ(C4>=0;C4<=99999);FRAGMENT.TEKSTU(C4;DŁ(C4);1)+JEŻELI(DŁ(C4)>1;FRAGMENT.TEKSTU(C4;DŁ(C4)-1;1)+JEŻELI(DŁ(C4)>2;FRAGMENT.TEKSTU(C4;DŁ(C4)-2;1)+JEŻELI(DŁ(C4)>3;FRAGMENT.TEKSTU(C4;DŁ(C4)-3;1)+JEŻELI(DŁ(C4)>4;FRAGMENT.TEKSTU(C4;DŁ(C4)-4;1)))));"błędny wpis")

pozdr!

-- Dodane 29.11.2009 (N) 16:43 --

PS

oczywiście sumowanie można zamienić na każdą inną operację matematyczną w podanej formule :slight_smile:


(Robert Trs) #8

Ta metoda się przydała

1 formuła w przypadku liczby pojedynczej liczy mi ją dwu krotnie a druga przy liczbie mniejszej od 10 wyświetla błędny wpis chociaż on jest poprawny hmm jak by do formuły

=FRAGMENT.TEKSTU(B1;1;1)+FRAGMENT.TEKSTU(B1;2;1)

dodać zastrzeżenie że jeśli brakuje cyfry to ma pominąć tą cześć formuły to był by cud mód orzeszki

Przy liczbie cyfrze tez wyświetla błąd błędny wpis.


(Pm 10 000 Days) #9

wklej dokładnie całą formułę. działa w zakresie liczb 0-99999.

-- Dodane 29.11.2009 (N) 22:01 --

liczb całkowitych.


(Robert Trs) #10

zmieniłem tylko C4 na B7 i wyświetla błąd "Błędny wpis" a komórka ma cyfrę 4 w sobie

zresztą zobacz

www.test.lokomotywa.cba.pl/priv/cs.xls

komórka E22


(Pm 10 000 Days) #11

Cyfrę którą Excel interpretuje jako tekst.

W komórce B7 wpisana jest przez Ciebie formuła zwraca wynik tekstowy: =FRAGMENT.TEKSTU(B4;2;1). Formuła podana przeze mnie musi na wejściu posiadać dane w formie wartości liczbowej ze względu na warunek logiczny ORAZ(). I bezpośrednio odnosić się do komórki B4.


(Robert Trs) #12

hmm dobra teraz możesz mi powiedzieć jak to przerobić na inne opcje ??

np. dla 2 cyfr. najlepiej jak najkrótsza formuła żebym mógł się połapać bo teraz się gubię.

akurat se z tym poradzić nie mogę.

ps. cyfry w wersie 4 są wzięte z komórki C3 za pomocą funkcji Fragment Tekstu


(Pm 10 000 Days) #13

Zamień zawartość komórki B4 lub B7 (którą chcesz do dalszych obliczeń) na format liczbowy. Tak zrobiłem po otwarciu pliku z komórką B4, więc u mnie zadziałało (powinienem o tym wspomnieć ale zapomniałem).

W warunku ORAZ() zmniejsz górną granicę do maksymalnej liczby jaką ma rozpoznawać np. 99. Usuń zbędne formuły JEŻELI().


(Dimatheus) #14

Hej,

Łatwiej wyeliminować to korzystają z formuły CZY.LICZBA() - formuła ta sprawdza, czy w danej komórce mamy do czynienia z liczbą, czy z tekstem. Jeśli to pierwsze, zwraca wartość PRAWDA, jeśli nie - FAŁSZ. Można więc łatwo zrobić zabezpieczenie w stylu: = JEŻELI(CZY.LICZBA(A1)=PRAWDA;"BŁĄD";jakaś tam formuła).

Niestety, tekstów nie da się porównywać z wartościami liczbowymi - i żaden program tego nie potrafi. Dlatego lepiej stosować formułę sprawdzającą, czy dana komórka to liczba czy tekst.

Bardzo proste :slight_smile:

JEŻELI(FRAGMENT.TEKSTU(B1;1;1)="";0;FRAGMENT.TEKSTU(B1;1;1))+JEŻELI(FRAGMENT.TEKSTU(B1;2;1)="";0;FRAGMENT.TEKSTU(B1;2;1))

Wartości liczbowe są w komórce B1. Przy dodawaniu i odejmowaniu, gdy brak danej liczby - a funkcja FRAGMENT.TEKSTU w takich przypadkach zwraca puste pole - puste pole zamieniamy na 0 (i tak jest tutaj), a w mnożeniu i dodawaniu na 1, przez co formuła wygląda tak:

JEŻELI(FRAGMENT.TEKSTU(B1;1;1)="";1;FRAGMENT.TEKSTU(B1;1;1))+JEŻELI(FRAGMENT.TEKSTU(B1;2;1)="";1;FRAGMENT.TEKSTU(B1;2;1))

.

Można też inaczej, jeśli zmiana na wartości liczbowa nie działa. Do formuły z komórki można dodać jakąkolwiek funkcję liczbową i to spowoduje, że liczby wzięte - jakby nie było za pomocą funkcji tekstowej - będą prezentowane jako liczby. Dla przykładu formułę z komórki B4 - FRAGMENT.TEKSTU($C$3;1;2), zamieniasz na LICZBA.CAŁK(FRAGMENT.TEKSTU($C$3;1;2)) - od razu widać, że będzie to liczba, gdyż domyślnie wyrównuje się ona do prawej, w przeciwieństwie do tekstów, które wyrównują się do lewej. :slight_smile:

Pozdrawiam,

Dimatheus