Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

[EXCEL] Wyciąganie tekstu z komórki

tohimon 12 Kwi 2012 12:00 20625 13
  • #1 12 Kwi 2012 12:00
    tohimon
    Poziom 10  

    W jaki sposób mogę wyciągnąć interesujący mnie tekst z komórki. Chodzi mi dokładnie o coś takiego:

    W komórkach mam ciąg danych (imię, nazwisko, adres, miasto) w tym numery telefonów. Musze je wyciągnąć do komórki sąsiedniej. Jak to mogę zrobić za pomocą symbolu wieloznacznego"#" ?? Telefony są w postaci: "###-###-###"

    0 13
  • #2 12 Kwi 2012 12:08
    mad_pablo
    Poziom 13  

    Za pomocą symbolu wieloznacznego to nie wiem czy Ci się uda. Może spróbuj zaszaleć z funkcją substring (po polsku fragment.tekstu). Pytanie tylko czy komórka z której będziesz pobierać dane ma przewidywalny format (zawsze taka sama kolejność danych) czy też trzeba coś zaczarować.

    Może podeślij przykład danych na których pracujesz.

    Pablo

    0
  • #3 12 Kwi 2012 12:14
    tohimon
    Poziom 10  

    Właśnie problem polega na tym, że numer telefonu jest w różnym miejscu czasami poprzedzony średnikiem czasami nie :( . Z tego co już czytałem na temat symboli wieloznacznych to można podać jak wygląda szukane wyrażenie i pozyskać dane. Jednak z przykładów jakie znalazłem jest to wyszukiwanie w kolumnach i ich zaznaczanie nie ma nic o pobieraniu danego fragmentu tekstu.

    znalazłem taki przykład:

    Kod: vb
    Zaloguj się, aby zobaczyć kod


    ale nie mam pojęcia jak go zastosować w swoim kodzie.

    0
  • #4 12 Kwi 2012 12:20
    mad_pablo
    Poziom 13  

    A możesz podsumować czego możemy się spodziewać o danych które otrzymujesz?
    1. Czy jest jakiś separator pól?
    2. Czy numer telefonu jest zawsze w takim samym formacie(długość, znaczki rozdzielająca itp?) albo czy potrafisz zapisać go symbolem wieloznacznym?

    O ile dobrze rozumiem to co dotychczas napisałeś numer jest w różnych miejscach ciągu, zapisany w sposób dowolny i nie zawsze oddzielony separatorem. Tak?

    Podeślij jakieś w miarę reprezentatywne przykłady to coś będę w stanie pomyśleć (zanonimizuj dane)

    Pablo

    0
  • #5 12 Kwi 2012 12:24
    tohimon
    Poziom 10  

    jedna komórka wygląda tak:

    tel.:###-###-### imię nazwisko adres

    inna

    imie nazwisko adres ###-###-###

    albo telefon przed adresem

    zdarza się również numer konta bankowego lub dwa numery telefonu rozdzielone przecinkiem

    znalazłem też taką funkcję ale nie umiem jej zastosować:

    Kod: vb
    Zaloguj się, aby zobaczyć kod

    0
  • Pomocny post
    #6 12 Kwi 2012 12:34
    mad_pablo
    Poziom 13  

    Zrobiłem niewielką formułę w excelu, mam nadzieję, że Ci pomoże:

    =FRAGMENT.TEKSTU(A1;SZUKAJ.TEKST("???-???";A1;1);SZUKAJ.TEKST(",";A1;SZUKAJ.TEKST("???-???";A1;1))-SZUKAJ.TEKST("???-???";A1;1))

    Formułka znajduje gdziekolwiek w tekście ciąg ???-??? i traktuje go jako początek numeru telefonu a potem wycina do najbliższego przecinka. Możesz łatwo to zmodyfikować żeby wycinać do najbliższej spacji albo innego separatora. Jeśli separatory są rożne w rożnych wierszach to zrób sobie dodatkową kolumnę do której załaduj dane z użyciem funkcji zastąp i w ten sposób wszystkie separatory możesz sprowadzić do standardowego separatora.

    Żeby formułka którą podesłałem zadziałała ważne jest, żeby każdy numer telefonu miał przewidywalną strukturę (###-###-###).

    0
  • #7 12 Kwi 2012 12:40
    adamas_nt
    Moderator Programowanie

    Jeśli jest tak, jak piszesz:

    [EXCEL] Wyciąganie tekstu z komórki

    Gorzej, jeśli przed numerem będzie miasto z mostem ;) Bielsko-Biała na ten przykład.

    0
  • #8 12 Kwi 2012 14:08
    tohimon
    Poziom 10  

    Działa idealnie dzięki. A jak mogę go zmodyfikować żeby wyciągał numer konta jeszcze?? (w postaci ## #### #### - 32 znaki licząc spacje). Próbowałem na własną rękę ale mi jakieś herezje wychodzą.

    niektóre komórki mam takie:

    FAKTURA VAT NR F/000078/05 BARA TRAN Jan Kowalski 535-538-121 adres miasto ## #### #### #### #### #### #### PKO O/Rzeszów

    Jak próbuję z kontem to pobiera mi ciąg począwszy od 05 BARA TRAN

    a jak wprowadzę " ?? ???? ????" to mam #ARG#

    0
  • Pomocny post
    #9 12 Kwi 2012 14:14
    mad_pablo
    Poziom 13  

    A jak jest zapisywany numer konta?
    Jeśli na przyklad "11 1111 1111 1111 1111 1111 1111" to jako szukany tekst w formule wpisz "?? ???? ???? ???? ???? ???? ????" to przypasuje się do struktury znaków numeru konta i powinno być OK. Jeśli pisany jest bez spacji to może być kłopot bo jedyne znaki wieloznaczne jakie akceptuje funkcja szukaj.tekst to * i ?. Ewentualnie możesz wtedy szukać tekstu "<separator>??????????????????????????<separator>" gdzie <separator> to twój znaczek rozdzielający wartości.

    Przykład:
    Tekst: Imie,Nazwisko,323-323-33,Opis,33 3333 3333 3333 3333 3333 3333, opis
    Formuła telefonu: =FRAGMENT.TEKSTU(A1;SZUKAJ.TEKST("???-???";A1;1);SZUKAJ.TEKST(",";A1;SZUKAJ.TEKST("???-???";A1;1))-SZUKAJ.TEKST("???-???";A1;1))
    Formula numeru konta: =FRAGMENT.TEKSTU(A1;SZUKAJ.TEKST("?? ????";A1;1);SZUKAJ.TEKST(",";A1;SZUKAJ.TEKST("?? ????";A1;1))-SZUKAJ.TEKST("?? ????";A1;1))

    Pozdrawiam

    0
  • #10 12 Kwi 2012 14:19
    tohimon
    Poziom 10  

    wpisałem

    Kod: excel
    Zaloguj się, aby zobaczyć kod


    i mam puste pole jako wynik

    i już widzę gdzie leży problem ja mam dane po spacji ty podałeś że dane lecą ciągiem i są oddzielone tylko przecinkiem dla tego u Ciebie działa.

    0
  • Pomocny post
    #11 12 Kwi 2012 14:27
    mad_pablo
    Poziom 13  

    I się nie dziwię. Twoja formula wycina od spacji przed numerem do spacji przed numerem konta ;)
    Wpisz: =FRAGMENT.TEKSTU(A1;SZUKAJ.TEKST(" ?? ???? ???? ???? ???? ???? ????";A1;1)+1;32)


    A jak już będziesz robił wersje finalną to polecam formułkę:
    =JEŻELI.BŁĄD(<formuła której używasz>;"") W ten sposób w arkuszu nie pojawi ci się #ARG tylko pusta komórka.

    1
  • #12 12 Kwi 2012 14:30
    tohimon
    Poziom 10  

    Działa :D dzięki za pomoc od dwóch dni z tym walczę teraz tylko to wcisnę w makro :)


    Wyskakuje błąd: #NAZWA?

    0
  • Pomocny post
    #13 12 Kwi 2012 21:49
    mad_pablo
    Poziom 13  

    tohimon napisał:

    Wyskakuje błąd: #NAZWA?


    Czyli masz literówkę w nazwie funkcji lub, jeśli wciskasz formułę w makro to musisz użyć angielskich nazw funkcji.

    Najlepiej użyj nagrywania makr i wpisz formułę, którą Ci podałem. W ten sposób w makro wpiszą Ci się angielskie odpowiedniki.

    0
  • #14 13 Kwi 2012 08:55
    tohimon
    Poziom 10  

    Już poprawiłem :) używam excela 2003 gdzie nie ma formuły jeżeli.błąd musiałem ja zastąpić funkcją JEŻELI(CZY.BŁĄD()) i teraz działa jak należy. Jeszcze raz wielkie dzięki za pomoc :)

    0