0
0 Produkty w koszyku

No products in the cart.

Podział kolumny po ilości znaków — PowerQuery #3

Pobrałeś dane ze źródła i jest z nimi poważny problem – są złączone razem. Nie ma w nich żadnego ogranicznika. 

PQ 3 - Podział kolumny po ilości znaków - 01

Ten ciąg potrzebujesz podzielić po ilości znaków. W Excelu najszybszym rozwiązaniem byłoby skorzystanie z polecenia Tekst jako kolumny z karty Dane (innym rozwiązaniem byłoby korzystanie z funkcji FRAGMENT.TEKSTU).
Czyli musimy zaznaczyć kolumnę danych, a następnie w pierwszym kroku polecenia wybrać opcję podziału po stałem szerokości (po ilości znaków).

PQ 3 - Podział kolumny po ilości znaków - 02

W drugim kroku musimy zaznaczyć miejsca, w których chcemy dokonać podziału (kliknąć myszką po odpowiedniej ilości znaków, żeby wstawił się linie podziału na kolumny. Podziału na kolumny chcemy dokonać, najpierw po 10, później po 2, 4, 6, 3 i 3 znakach).

PQ 3 - Podział kolumny po ilości znaków - 03

W trzecim ostatnim kroku możemy wybrać jak mają być sformatowane poszczególne kolumny. W tym przykładzie dla wszystkich kolumn wystarczający jest format ogólny — poprawnie zinterpretuje wszystkie wartości – nawet datę z pierwszej kolumny. Będziemy musieli tylko zmienić miejsce docelowe. Zamiast do kolumny A2 chcemy, żeby dane zaczęły się wpisywać od komórki B2.

PQ 3 - Podział kolumny po ilości znaków - 04

Jeśli mamy taki podział w Excelu i wystarczy, że dokonamy go raz to sprawa jest jasna. Ale jeśli dane pochodzą z innego źródła (np.: pliku tekstowego, .csv, czy bazy danych) to chcielibyśmy rozwiązanie bardziej dynamiczne. Rozwiązaniem jest dodatek PowerQuery (dostępny od Excela 2010). 

Dla ułatwienia przykładowe dane przechowujemy w tabeli Excela, żeby móc skorzystać polecenia PowerQuery – Z tabeli (w Excelu 2016 znajduje się ono na karcie dane, wcześniej na osobnej karcie dodatku PowerQuery).

PQ 3 - Podział kolumny po ilości znaków - 05

Trafimy do edytora zapytań (PowerQuery), gdzie potrzebujemy rozwinąć polecenie Podziel kolumny, by odnaleźć możliwość dzielenia po ilości znaków. (Możemy usunąć domyślnie dodany krok Zmieniono typ, gdyż nic nam w tym momencie nie daje).

PQ 3 - Podział kolumny po ilości znaków - 06

Tutaj niestety nie jest tak prosto, bo podziału możemy dokonać po ilości znaków z lewej bądź prawej strony, albo po powtarzającej się ilości znaków, ale nie ma takiej możliwości jak w polecenie Tekst jako kolumna, gdzie sami klikaliśmy w miejsca podziału.

Na razie ustawmy liczbę znaków na 10 i podział z lewej strony.

PQ 3 - Podział kolumny po ilości znaków - 07

Prawdopodobnie znowu dodał się krok Zmieniono typ, ale tym razem go zostawiamy, żeby daty były poprawnie interpretowane. Dla nas jednak jest ważniejszy wcześniejszy krok Podzielono kolumnę według położenia. Klikamy na niego i patrzymy na formułę, która pokazuje się w pasku formuły:

= Table.SplitColumn(Źródło,"Połączona kolumna",Splitter.SplitTextByPositions({0, 10}, false),{"Połączona kolumna.1", "Połączona kolumna.2"})

PQ 3 - Podział kolumny po ilości znaków - 08

Jeśli nie widzisz paska formuły przejdź na kartę Widok i zaznacz pole wyboru (checkbox) Pasek formuły.

Jest to formuła w języku M (języku PowerQUery). Prawdopodobnie w większości jest dla Ciebie mało zrozumiała, ale wystarczy, że skupimy się na jej fragmentach {0, 10} oraz {"Połączona kolumna.1", "Połączona kolumna.2"} . Są to odpowiednio ilości znaków, po których następuje podział po kolumnach (pierwsze zero jest istotne, gdyż odpowiada za pierwszą kolumnę, że zaczyna się ona od początku). 

Czego nie widać na pierwszy rzut oka jest to, że liczba znaków jest zawsze od początku tekstu. Czyli jeśli chcemy dokonać podziału najpierw po 10, a potem po 2 znakach, to argument wpisany w formule musimy mieć odpowiednio postać {0, 10, 12, 16, 22, 25, 28}, a nie {0, 10, 2}. Oznacza to podział na trzy kolumny, który w drugim omawianym przez na argumencie musimy nadać nazwy. Jeśli napiszesz mniej nazw kolumn niż wynika to z podziału po ilości znaków, to dalsze kolumny się nie wyświetlą. Dla uproszczenia przykładu kolumny nazywamy "k1", "k2", itd.

Mamy mało kolumn, więc jesteśmy w stanie sami policzyć sobie kolejne ilości znaków, ale poniżej znajdziesz sposób na ułatwienie tego procesu w Excelu. Czyli funkcja PowerQuery dzieląca tekst tak jak wcześniej polecenie Tekst jako kolumny powinna mieć postać:

= Table.SplitColumn(Źródło,"Połączona kolumna",Splitter.SplitTextByPositions({0, 10, 12, 16, 22, 25, 28}, false),{"k1", "k2", "k3", "k4", "k5", "k6"})

Niestety taka zmiana formuły spowoduje błąd w kolejnym kroku (domyślnej zmianie typów danych), gdyż zmieniliśmy nazwy kolumny. Najlepiej go usunąć i samemu odpowiednio pozmieniać typy kolumn korzystając np.: z polecenia z karty Narzędzia główne.

Mamy odpowiedni podział kolumn, więc możemy je załadować do Excela. Pamiętaj przy tym, żeby rozwinąć polecenie Zamknij i załaduj by zobaczyć możliwość załadowania do, zamiast domyślnego ładowania danych zapytania do nowego arkusza.
Wynik zapytania PowerQuery jest identyczny jak wynik polecenia Tekst jako kolumny:

PQ 3 - Podział kolumny po ilości znaków - 09

Jest jednak duża różnica, ponieważ tabelę wynikową z PowerQuery można odświeżyć klikając na nią np: prawym przyciskiem myszy i wybierają polecenie Odśwież z podręcznego menu. Można nawet korzystając z polecenia Połączenia na karcie Dane ustawić, żeby zapytanie odświeżało się automatycznie przy otwieraniu pliku.

Jak już wspominałem w tym przykładzie jest mało kolumn, ale w pracy miałem sytuację wielokrotnie, że liczba kolumn wynosiła kilkadziesiąt i łatwo byłoby się pomylić przy liczeniu. Dlatego korzystałem z pomocy Excela przy tworzeniu ciągów liczbowy do argumentów funkcji PowerQuery.

Załóżmy sytuację, że mamy podane liczby co ile musi nastąpić podział kolumny, czyli w tym przykładzie 10, 2, 4, 6, 3, 3. Musimy pamiętać, że PowerQuery potrzebuje jeszcze początkowego 0 oraz, że ciąg ma być ilością znaków od początku tekstu, a długości poszczególnych kolumn. Dlatego musimy odpowiednio zsumować wartości:

=SUMA(I$1:I1)

PQ 3 - Podział kolumny po ilości znaków - 10

Pierwsze odwołanie jest zablokowane, żeby się nie ruszało, a drugie jest odblokowane, żeby przeciągając kolumnę w dół odpowiednio poszerzał się zakres, po którym sumujemy.

Jeśli w Twojej wersji Excela jest dostępna funkcja POŁĄCZ.TEKSTY, to wystarczy, że z niej skorzystasz by połączyć wszystkie liczby:

=POŁĄCZ.TEKSTY(", ";;J1:J7)

Jeśli jej nie masz, to albo wstawiasz dużo argumentów do funkcji ZŁĄCZ.TEKSTY, albo w każdym kolejnym wierszy dołączasz przecinek i kolejną liczbę do komórki powyżej:

=K2&", "&J3

PQ 3 - Podział kolumny po ilości znaków - 11

Pierwsze 0 wpisujemy ręcznie.
Wtedy końcowy tekst możemy skopiować i wkleić do zapytania PowerQuery.

Pozdrawiam
Adam Kopeć
Miłośnik Excela
Microsoft MVP

Excel — Zamiana "angielskich" liczb na "polskie" za pomocą Tekst jako kolumny — Porada #292

W tym tygodniu na szkoleniu, które prowadziłem, został poruszony również wątek zamiany angielskiego zapisu liczb na polski za pomocą polecenia Tekst jako kolumny.
Zacznijmy od tego, ze mamy liczby, gdzie separatorem tysięcy jest przecinek, a część całkowitą od ułamkowej liczby oddziela kropka czasem też się trawi minus na końcu liczby. 

Porada 292 - Zamiana angielskich liczb na polskie za pomocą Tekst jako kolumny 01

Liczby te możemy łatwo zamienić na polskie (czy też takiej jakie wynikają z Twoich ustawień regionalnych) za pomocą polecenia Tekst jako kolumny, które znajduje się na karcie Dane. Musimy tylko zaznaczyć kolumnę z liczbami, które chcemy zamienić.
Przez pierwsze dwa kroki przechodzimy szybko upewniając się tylko, że nie jest zaznaczony żaden ogranicznik, który spowodowałby podział liczby na osobne kolumny. Musimy się na chwilę zatrzymać w kroku 3 i kliknąć przycisk Zaawansowane.

Porada 292 - Zamiana angielskich liczb na polskie za pomocą Tekst jako kolumny 02

W oknie, które się otworzy musimy wybrać takie separatory jakie są w liczbach, które chcemy zmienić, a Excel zamieni je na takie, które wynikają z ustawień regionalnych. Możemy też zaznaczyć checkbox, że znak minus znajduje się na końcu liczby.

Porada 292 - Zamiana angielskich liczb na polskie za pomocą Tekst jako kolumny 03

Po tym wystarczy zatwierdzić opcje i wkleić liczby tam, gdzie chcesz np.: w kolumnę obok, żeby było widać wcześniej „angielski” zapis i aktualny „polski” zapis liczby.

Porada 292 - Zamiana angielskich liczb na polskie za pomocą Tekst jako kolumny 04

Pozdrawiam
Adam Kopeć
Miłośnik Excela
Microsoft MVP

Wyciąganie drugiego imienia — Tekst jako kolumny i JEŻELI działaj jak umiesz — porada #282

Mówi się, że przeciętny użytkownik Excela zna około 2% jego możliwości. Dla nas nie jest istotne ile tych procent faktycznie jest, ale żeby nauczyć się korzystać z tego co umiesz, bo w Excelu, jak w życiu, jest wiele sposobów na rozwiązanie problemów, które stoją przed Tobą. Dlatego w tym wpisie chodzi przede wszystkim o to, żeby nakłonić Cię do myślenia, żebyś wykorzystał swoje szare komórki i umiejętności do rozwiązania problemu, a nie żebyś załamywał ręce.

Zrobimy to na przykładzie podziału danych osobowych na pierwsze imię, drugie imię i nazwisko. Robimy założenie, że znamy polecenie Tekst jako kolumny i JEŻELI.

porada-282-wyciaganie-drugiego-imienia-tekst-jako-kolumny-i-jezeli-dzialaj-jak-umiesz-01

W pierwszym kroku wystarczy, że dane osobowe podzielimy za pomocą polecenia Tekst jako kolumny z karty Dane 

porada-282-wyciaganie-drugiego-imienia-tekst-jako-kolumny-i-jezeli-dzialaj-jak-umiesz-02

według ogranicznika,

porada-282-wyciaganie-drugiego-imienia-tekst-jako-kolumny-i-jezeli-dzialaj-jak-umiesz-03

którym będzie spacja

porada-282-wyciaganie-drugiego-imienia-tekst-jako-kolumny-i-jezeli-dzialaj-jak-umiesz-04

na kolumny i wstawimy do komórki B2.

porada-282-wyciaganie-drugiego-imienia-tekst-jako-kolumny-i-jezeli-dzialaj-jak-umiesz-05

Nasz podział nie będzie idealny, bo czasami będziemy mieli 2, a czasami 3 kolumny, ale tutaj z pomocą przyjdzie nam jeszcze funkcja JEŻELI. Najpierw będziemy sprawdzać czy jest drugie imię – jeśli jest wypełniona 3 kolumna to znaczy, że jest drugie imię, co się przekłada na formułę:

=JEŻELI(D3="";"";C3)

porada-282-wyciaganie-drugiego-imienia-tekst-jako-kolumny-i-jezeli-dzialaj-jak-umiesz-06

W podobny sposób, jeśli 3 kolumna nie jest pusta oznacza to, że jest w niej nazwisko, a jeśli jest to znaczy, że nazwisko jest w 2 kolumnie, czyli możemy odpowiednio napisać taką formułę:

=JEŻELI(D2>"";D2;C2)

porada-282-wyciaganie-drugiego-imienia-tekst-jako-kolumny-i-jezeli-dzialaj-jak-umiesz-07

Może nie jest to najelegantszy sposób na rozwiązanie tego problemu, ale w większości sytuacji wystarczający i przede wszystkim opiera się, z założenia, o znane nam funkcjonalności Excela 😉

Pozdrawiam
Adam Kopeć
Miłośnik Excela

Tekst jako kolumny do podziału danych z komórki i unikać dodatkowych Spacji — sztuczki #38

Jak podzielić dane z komórek by uniknąć dodatkowych Spacji?

Zobacz jak korzystać z opcji Tekst jako kolumny do podziału danych z komórki i unikać dodatkowych Spacji


Tekst jako kolumny do podziału danych z komórki i unikać dodatkowych Spacji — sztuczki #38

1. Użyj ogranicznika spację i myślnika w oknie dialogowym Tekst jako kolumny, aby uniknąć dodatkowych spacji w komórkach.

P.S.

Wpis na podstawie Excel Magic Trick 1014

Jeśli chcesz dowiedzieć się więcej na temat Excela lub nie wiesz jak coś zrobić do mnie o tym w komentarzu pod spodem albo napisz do mnie bezpośrednio, ja w miarę możliwości odpowiem na Twoje pytanie.

Excel i Adam - kontakt

Bezpośredni odnośnik do filmu na youtube — Tekst jako kolumny do podziału danych z komórki i unikać dodatkowych Spacji — sztuczki #38