Excel 2010 - rozdzielanie danych z jednej do wielu komórek

Witam, mam do zrobienia arkusz ,w którym w jednej kolumnie podane są adresy (ulica, miejscowość, kod pocztowy) i muszę rozdzielić te 3 rzeczy na osobne kolumny. Przeważnie miejscowość jest pierwsza więc tutaj mogę po prostu wydzielić pierwsze słowo i później ręcznie sprawdzać i poprawiać dwuczłonowe nazwy (nie widzę innej możliwości).

Ulicę może uda się wydzielić od ‘ul.’ do numeru, jeszcze się nad tym nie zastanawiałem.

Chciałem zacząć od kodu pocztowego. Jestem dość zielony jeżeli chodzi o excela, sporo googlałem ale nie udało mi się rozwiązać problemu. Mianowicie, zrobiłem formułę która wyszukuje myślnik i wydziela 2 znaki przed nim i 3 po, czyli cały kod pocztowy. Problem w tym, że w kilku procentach adresów myślnik pojawia się w nazwie miejscowości lub ulicy, co przy dużym arkuszu daje setki nieprawidłowych komórek. Chciałem więc wyszukiwać konkretnie taki ciąg znaków, żeby trzecim znakiem przed myślnikiem oraz czwartym po myślniku była spacja. Więc wpisałem " ??-??? " ale niestety rezultatem jest błąd #VALUE!. Nie jestem w stanie znaleźć rozwiązania samodzielnie, tak więc będę bardzo wdzięczny za pomoc.

Rozwiązaniem Twoich problemów są w sumie dwie funkcje:

  • FRAGMENT.TEKSTU
  • ZNAJDŹ

Jeżeli założymy że w pierwszej kolumnie masz tekst w układzie Poznań 63-020 Św. Marcin to aby uzyskać oddzielne fragmenty, powinieneś zastosować trzy formuły w kolejnych po sobie kolumnach (B, C, D)

  1. =FRAGMENT.TEKSTU(A1;1;ZNAJDŹ(" ";A1;1)-1)
  2. =FRAGMENT.TEKSTU(A1;ZNAJDŹ(" ";A1;1)+1;6)
  3. =FRAGMENT.TEKSTU(A1;ZNAJDŹ(C1;A1;1)+7;50)

Jeżeli wychodzi zbyt dużo spacji (niepotrzebnych), to dodatkowo wykorzystaj funkcję USUŃ.ZBĘDNE.ODSTĘPY, czyli np.:

  1. =USUŃ.ZBĘDNE.ODSTĘPY(FRAGMENT.TEKSTU(A1;1;ZNAJDŹ(" ";A1;1)-1))

W razie potrzeby doczytaj więcej w necie :slight_smile:

Hej, dzięki za odpowiedź ale niestety nie przeczytałeś zbyt dokładnie mojego posta - Twoje rozwiązanie nie usuwa problemów które mam. W przypadku dwuczłonowych miejscowości wszystko się wykrzaczy, np. Biała Podlaska. Dokładnie tych funkcji użyłem ale, tak jak napisałem w pierwszym poście, to nie wystarcza.

Okej, trochę niedokładnie przeczytałem, mea culpa, ale sama idea formuł wymaga tylko lekkiego przebudowania

Idąc po kolei (B,C,D) wklej teraz

  1. =FRAGMENT.TEKSTU(A1;1;ZNAJDŹ("-";A1;1)-4)
  2. =FRAGMENT.TEKSTU(A1;DŁ(B1)+2;6)
  3. =FRAGMENT.TEKSTU(A1;DŁ(B1)+DŁ(C1)+2;50)

Działa poprawnie?

Co prawda potrzebujesz jeszcze numeru ulicy, ale myślę że to już zostawię Tobie na deser :slight_smile:

 

O tym też już pisałem :slight_smile: BIelsko-Biała i wszystko się sypie. Zaskakująco dużo jest miejscowości lub nazw ulic z myślnikiem.

Heh, późna pora robi swoje…

Nie ma co wyważać drzwi, więc skorzystamy z gotowego rozwiązania autorstwa **mkkk23 **dostępnego na portalu [excelforum.pl](http://www.excelforum.pl/light.php/o_t t_41677 wyodr%C4%99bnienie-kodu-pocztowego.html)

W module makr wstaw kod:

Function Kod_Pocztowy(kom As Excel.Range) As String

 

    On Error Resume Next

 

    Set objRegExp = CreateObject(“VBScript.RegExp”)

Super, wielkie dzięki :slight_smile: Zaraz przetestuję czy działa i czy sobie z tym poradzę.

I jak tam, działa tak jak powinno?