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

excel - Dwa pierwsze wyrazy z danego wiersza.

07 Lut 2013 09:03 6045 17
  • Poziom 14  
    Hejka, dziś przyszedł czas na nowe 'wyzwania'... i teraz gdybam nad elementem wypisującym dwa pierwsze wyrazy z danego pola..

    Komentarze do kont to w wiekszości przypadków "Imię Nazwisko Opis konta".
    Any idea?

    Znam komendy left itd i wiem, że te akurat nie robią tego. Generalnie wyrazy są odosobnione spacją :P
    Darmowe szkolenie: Ethernet w przemyśle dziś i jutro. Zarejestruj się za darmo.
  • Poziom 14  
    Walczyłem z kombinacją" =USUŃ.ZBĘDNE.ODSTĘPY(LEWY(PODSTAW((A1," ",POWT(" ",100)),200) ale nie dała efektu :P

    Poza tym, mam zakichanego polskiego excela ;/
  • Poziom 38  
    Kod: vb
    Zaloguj się, aby zobaczyć kod


    Taką funkcje wpisz w module, a w komórce, gdzie oczekujesz imienia i nazwiska wpisz =DwaPierwsze(A1).

    Zapewne można bez funkcji własnej, ale mi tak jest szybciej odkąd wprowadzono w Excelu polskie nazwy formuł.
  • Poziom 14  
    =TRIM(LEFT(SUBSTITUTE(A2;" ";REPT(" ";100));200)) :p teżź nie działą ^_^

    Dodano po 1 [minuty]:

    Przyznam, że nie ogarniam o jakie moduły chyodzi :P
    Mowa o kodzie VBS do makr?
  • Poziom 14  
    W międzyczasie zmodziłem coś takiego :P w sumie (jak dotąd) działa
    =LEWY(A1; ZNAJDŹ(" ";A1;9))
  • Pomocny post
    Poziom 38  
    =LEWY(A1;ZNAJDŹ(" ";A1;ZNAJDŹ(" ";A1;1)+1))

    Skoro chcesz korzystać tylko z formuł.

    Skąd Ci się wzięzo 9 w tej formule:
    =LEWY(A1; ZNAJDŹ(" ";A1;9)) ?
  • Pomocny post
    Poziom 33  
    Proponuję tak:
    Zakładam, że w komórce A1 jest tekst ze słowami oddzielonymi pojedynczymi spacjami i należy wydzielić z tego dwa pierwsze słowa.
    Do komórki B1 wpisujemy: =SZUKAJ.TEKST(" "; A1)
    Do komórki C1 wpisujemy: =SZUKAJ.TEKST(" "; A1; B1+1)
    Do komórki D1 wpisujemy: =LEWY(A1; B1-1)
    Do komórki E1 wpisujemy: =FRAGMENT.TEKSTU(A1; B1+1; C1-B1-1)
    W komórce D1 powinno być pierwsze słowo, a w komórce E1 - drugie.
    W razie potrzeby formuły można połączyć, aby uniknąć komórek pomocniczych, ale wtedy całość będzie mniej czytelna.
    Powodzenia
  • Poziom 14  
    Hmm narazie sprawdzam regułę PRL'a i generalnie działa ale tak jak moja wywala się gdy w polu ktoś wpisał tylko imię i nazwisko bez opisu.
    Pole | Monika Kowalska | Wynik = #ARG!
    Pole |Marcin Perepeczko Dyrektor | Wynik = Marcin Perepeczko

    Dodano po 4 [minuty]:

    Dobra, może szczegółowiej.
    Niektóre pola mają formę: Imię Nazwisko Cośtam
    inne :Imię Nazwisko Cośtam Cośtam
    a jeszcze inne: Imię Nazwisko
    a inniejsze: Imię Nazwisko : konto zablokowane 2012-10-31 użytkownik nie pracuje :)

    Standardu na to nie ma :/
  • Pomocny post
    Poziom 33  
    Ja zrozumiałem, że te dwa słowa mają być wyodrębnione osobno, jeśli razem, to jest jeszcze prościej. Zmodyfikowałem komórkę C1 tak, aby nie zwracała błędu gdy tekst składa się tylko z dwu słów i niczego więcej.
    C1 : =JEŻELI.BŁĄD(SZUKAJ.TEKST(" ";A1;B1+1); DŁ(A1)+1)
    Całe dwa słowa odczytamy formułą: =LEWY(A1; C1-1)
  • Poziom 14  
    Panowie, dzięki za pomoc :)
    Wstępnie działą :)

    ZObaczymy czy teraz uda mi się policzyć co policzyć miałem :P
    THX!
  • Poziom 38  
    Oto uniwersalna funkcja zwracająca n-ty wyraz tekstu:

    Kod: vb
    Zaloguj się, aby zobaczyć kod


    Teraz możesz sobie wybierać według uznania.
  • Poziom 22  
    Biorąc pod uwagę, że jest to funkcja i może być użyta w 900 komórkach lepiej zamienić ewentualny opis w MsgBox np. na wynik funkcji.

    Może to nadmierne zabezpieczenie, ale uwzględniłbym czynnik ludzki- może się zdarzyć, że ktoś wpisze dwie spacje zamiast jednej (oj, zdarza się). Wtedy lepiej wstępnie użyć Replace i zredukować wielokrotne spacje. Tym bardziej, że takie błędy trudniej wyłapać.

    wic1 napisał:
    a inniejsze: Imię Nazwisko : konto zablokowane 2012-10-31 użytkownik nie pracuje :)

    Czy na pewno po nazwisku, a przed dwukropkiem ": konto zabl..." jest zawsze spacja? Jeśli nie, to też trzeba to uwzględnić.
  • Poziom 38  
    Aldrin, funkcja, którą napisałem, była dedykowana dla autora.
    Wczytaj się w wątek, to zauważysz, że autor nie radzi sobie z makrami i funkcjami.
    Funkcję którą zarysowałem, nie jest odporna na wszystko.
    W zasadzie, to niepotrzebnie to podałem, skoro autor nie za bardzo interesuje się VBA.
  • Poziom 22  
    Wczytałem się.
    Funkcja jest bardzo ładna i uniwersalna :)
    To czy autor sobie radzi, czy nie - nie zmienia istoty dla MsgBox, a z odpornością jest tak, że na razie autor powoli ogarnia problem i stopniowo wychodzą na wierzch różne "detale". Możliwe, że coś tam jeszcze wyjdzie w praniu, wiec nie sposób napisać idealny kod już teraz.
    To jest sugestia - nie trzeba jej brać pod uwagę jeśli ktoś nie chce.
  • Poziom 38  
    Aldrin, oczywiście, że masz rację.:)

    No to może tak:

    Kod: vb
    Zaloguj się, aby zobaczyć kod
  • Poziom 6  
    Cześć
    Szukam rozwiązania drugi dzień, widzę podobną formułę napisałeś i potrzebowałbym pomocy. Chodzi mi o coś takiego jak kiedyś pomogłeś kodem =DwaPierwsze.

    Tutaj temat z problemem:
    https://www.elektroda.pl/rtvforum/topic2919924.html

    Potrzebuje wyciągnąc z tych danych (jeden wiersz/zdanie):
    A215IŁB. SOPLICA ŚLIWKA 0,1 L 32% BOLS/12/ /N/ szt 12 48,60 11,18 59,78

    czyli potrzebowałbym:
    =Pierwsze.Słowo : A215IŁB.
    =Trzeci.od.tyłu : 48,60
    =Artykuł.nazwa : SOPLICA ŚLIWKA 0,1 L 32% BOLS/12/ /N/

    Dałby ktoś radę, aby te dane powyciągać z tego wiersza?