Separacja liczb wpisanych w jedną komórkę Excela

by Marcin on Styczeń 28, 2010

Separacja liczba w komórce Excela

Załóżmy, że w komórce Excela masz ciąg liczb oddzielonych od siebie jakimś symbolem. Na przykład tak, jak na obrazku poniżej.

Suma liczb wpisanych w jedna komórke Excela

Oczywiście taki tekst możesz łatwo rozdzielić na poszczególne liczby przy pomocy narzędzia “Tekst jako kolumny”. Nie jest to jednak dokładnie to, o co mi chodzi, dlatego dzisiaj postanowiłem napisać o tym, w jaki sposób możesz pobrać  dowolną liczbę z takiego ciągu i wykorzystać ją w swoich obliczeniach.

W kolejnym wpisie pokażę jak można obliczyć sumę wszystkich liczb w takiej komórce (jest spora szansa na to, że sam sobie to w międzyczasie  wykombinujesz).

Dla uproszczenia przyjmiemy kilka założeń:

  • Liczby zawsze odzielone są od siebie tylko jednym symbolem. Nie sprawdzam tego w żadnej formule i w przypadku wstawienia pomiędzy liczby większej ilości znaków oddzielających, formuły prawdopodobnie zwrócą błędy (a już na pewno drastycznie spadnie wiarygodnośc wyników).
  • Chciałbym mieć możliwość wyboru znaku jakim będą rozdzielone liczby.
  • W przygotowanych formułach używać będziemy znaku”@” dlatego ten znak nie może pojawić się jako znak oddzielający liczby.

Na początek przygotujemy sobie wskazany ciąg tekstowy z liczbami, usuwając z niego wszystkie “nadwymiarowe” znaki na początku i na końcu ciągu. Dodatkowo, na własne potrzeby, na końcu takiego “czystego” już ciągu dodamy wybrany przez nas znak oddzielający liczby.

=USUŃ.ZBĘDNE.ODSTĘPY(C2)&E2

Ilość liczb we wskazanej komórce łatwo policzymy używając formuły:

=DŁ(D10)-DŁ(PODSTAW(D10;E2;""))

W naszym przykładzie zwraca ona wartośc 7, co jak łatwo sie przekonać (zerkając na obrazek lub animację powyżej) jest wartością jak najbardziej prawidłową.

Formuła, którą przygotowałem i która zwraca wybraną liczbę z ciągu tekstowego wygląda następująco:

=WARTOŚĆ(JEŻELI(C5=1;FRAGMENT.TEKSTU(USUŃ.ZBĘDNE.ODSTĘPY(C3)&E3;1;1);FRAGMENT.TEKSTU(USUŃ.ZBĘDNE.ODSTĘPY(C3);SZUKAJ.TEKST("@";PODSTAW(USUŃ.ZBĘDNE.ODSTĘPY(C3)&E3;E3;"@";C5-1))+1;SZUKAJ.TEKST("@";PODSTAW(USUŃ.ZBĘDNE.ODSTĘPY(C3)&E3;E3;"@";C5))-SZUKAJ.TEKST("@";PODSTAW(USUŃ.ZBĘDNE.ODSTĘPY(C3)&E3;E3;"@";C5-1))-1)))

Wygląda na bardzo zawiłą, a to głównie dlatego, że wszystkie operacje zostały spakowane w jedna formułę. Jeżeli nie boisz się komórek pomocniczych (które nie tylko przyśpieszają pracę, ale także ułatwiają późniejsze “czytanie” i zrozumienie formuł) możesz całość podzielić na mniejsze fragmenty i wtedy mogłoby to wyglądać tak:

Separacja liczb w komórce Excela

Komórki pomocnicze zdefiniowane są następująco:

Separacja liczba w komórce Excela

a formuła zwracająca poszukiwaną liczbę wygląda teraz tak:

=JEŻELI(C5=1;FRAGMENT.TEKSTU(C3;1;1);FRAGMENT.TEKSTU(USUŃ.ZBĘDNE.ODSTĘPY(C3);SZUKAJ.TEKST("@";C7)+1;C10-C9-1))

O wiele prościej prawda ?
noaccess Rejestracja Zaloguj sie

Marcin

{ 1 trackback }

Jak obliczyć sumę liczb wpisanych w jedną komórkę Excela
Luty 2, 2010 o 3:56 am

{ 1 comment… read it below or add one }

strzelec99 Styczeń 31, 2010 o 8:22 am

Bardzo fajny pomysł, z tym, że jesli pierwsza liczba będzie zawierała więcej niż jeden znak, fomuła zwróci tylko pierwszy :) . Po małej modyfikacji powinna wyglądać ona jakoś tak

=WARTOŚĆ(JEŻELI(C10=1;FRAGMENT.TEKSTU(USUŃ.ZBĘDNE.ODSTĘPY(C8)&E8;1;SZUKAJ.TEKST(“@”;PODSTAW(USUŃ.ZBĘDNE.ODSTĘPY(C8)&E8;E8;”@”;C10);1)-1);FRAGMENT.TEKSTU(USUŃ.ZBĘDNE.ODSTĘPY(C8);SZUKAJ.TEKST(“@”;PODSTAW(USUŃ.ZBĘDNE.ODSTĘPY(C8)&E8;E8;”@”;C10-1))+1;SZUKAJ.TEKST(“@”;PODSTAW(USUŃ.ZBĘDNE.ODSTĘPY(C8)&E8;E8;”@”;C10))-SZUKAJ.TEKST(“@”;PODSTAW(USUŃ.ZBĘDNE.ODSTĘPY(C8)&E8;E8;”@”;C10-1))-1)))

Leave a Comment