Excel - scalanie danych z tablicy przestawnej
Wielokrotne dane w danej kategorii jako pojedynczy tekst.
Także dodatek do Excel 2013- “AK_dodFunkcje.xlam” dla kilku nowych funkcji Excel 2016+ : TEXTJOIN/POŁĄCZ.TEKSTY, CONCAT/ZŁĄCZ.TEKST, SWITCH/PRZEŁĄCZ, IFS/WARUNKI
(+ opis szybkiego przełączania języka funkcji Excel)
Tabela przestawna to świetny sposób na wykrywanie powiązań danych. Gdy korzystam z tej funkcjonalności to najczęściej
- przełączam widok we wstążce “Narzędzia tabel przestawnych”:
Projektowanie
\Układ raportu
\Pokaż w formie tabelarycznej
- wyłączam sumy częściowe i końcowe (gdy są mi niepotrzebne)
i otrzymuję układ kategorii z potencjalnie wielokrotnymi danymi - jak w kolumnach A i B na rys. Często potrzebuję scalić te wielokrotne dane w jeden tekst - jak w kol. D, żeby się nimi posługiwać w kolejnym raporcie.
Rysunek to obraz pliku “JoinIfEmpty_o.old.xlsx”, gdzie opisałem jedno z możliwych rozwiązań. Omawiane tutaj pliki znajdują się w spakowanej paczce
Podstawą tego rozwiązania jest możliwość scalenia tekstów z wielu komórek. W tym celu - w przypadku wersji MS Office 2013 i starszych - można użyć dodatku dla Excel “AK_dodFunkcje.xlam”. Opis instalacji dodatku (standardowy - nic specjalnego) jest w pliku “AK_dodFunkcje-test.xlsx”. Plik “AK_dodFunkcje.bas” zawiera kod funkcji “TEXTJOIN” zawartej w tym dodatku (a także funkcji CONCAT, SWITCH, IFS występującyh w Excel 2016+).
Instalacja dodatku jest zbędna w wersji MS Office 365 lub 2016 i wyższych, które standardowo zawierają funkcję “TEXTJOIN” (en) / “POŁĄCZ.TEKSTY” (pl). Przykład jej użycia do celu jak wyżej jest w pliku “JoinIfEmpty_o.2016.xlsx”.
Funkcja “POŁĄCZ.TEKSTY” jest standardowo dostępna w LibreOffice - zob. “JoinIfEmpty_LiOf.ods”. W LibreOffice można się też łatwo przełączać na ang. nazwy funkcji: Narzędzia \ Opcje [Alt+F12] \ LibreOffice Calc \ Formuła \ [x] Użyj angielskich nazw funkcji
W pliku “AK_dodFunkcje-test.xlsx” jest przedstawiony jeszcze inny sposób scalania danych. Gdy przedstawimy je w tabeli przestawnej tak, że kategorie są we wierszach a dane w kolumnach to w wartościach tabeli przestawnej można wpisać liczbę wystąpień danych i potem scalać te dane z wiersza nagłówkowego, dla których pojawiła się niezerowa wartość.
Pamiętajmy też, że możemy sobie błyskawicznie zmieniać język w menu Excela: Plik
\ Opcje
\ Język
i korzystać z polskich bądź angielskich nazw funkcji.
W każdym przypadku w wewnętrznym zapisie pliku XLSX pamiętane są angielskie nazwy funkcji. Aby się o tym przekonać potraktuj plik XLSX jako archiwum ZIP (np. dopisz takie rozszerzenie do pliku) i zobacz pliki XML w folderze “\xl\worksheets”. Nowsze funkcje, niedostępne w wersjach 2013 i wcześniejszych mają w tych XML przedrostek “_xlfn.”, np. “_xlfn.TEXTJOIN”.
W tym miejscu można wspomnieć o łączeniu danych z plików Excela w folderze (zob. https://szkolenieexcel.waw.pl/) do jednego arkusza i dalej do tabeli przestawnej - o.2016+ : Dane \ Nowe zapytanie \ Z pliku \ Z foderu (w o.2013- : Power Query \ Z pliku \ Z foderu).
Inne interesujące opcje łączenia można znaleźć w http://excelszkolenie.pl - Operacje na wielu arkuszach na raz np. =SUMA(Arkusz1:Arkusz3!B2)
. Działa to też w LibreOffice ^ - nieco inna jest postać wyrażenia: =SUMA($'Arkusz1'.B2:$'Arkusz3'.B2)
. Podobne są też skróty klawiszowe do poruszania się po arkuszach - [Ctrl+PgUp/PgDn] i zaznaczania wielu arkuszy [Shift+Ctrl+PgUp/PgDn].
TEXTJOIN / POŁĄCZ.TEKSTY działa w Excel 2016+ także na zakres wielu arkuszy, np. =POŁĄCZ.TEKSTY(" ~ ";0;Arkusz1:Arkusz3!A1)
.
Nie działa to (na razie) z dodatkiem “AK_dodFunkcje.xlam” w Excel 2013-, ani w LibreOffice. We wszystkich wersjach Excel Może najpierw można wykonać konsolidację wielu arkuszy. W MS Office stosunkowo wygodnie dodaje się te same obszary przeklikując kolejne arkusze. W LibreOffice można wręcz dodać je na raz przy zaznaczonych wielu arkuszach. Choć zostanie to zamienione na statyczną listę arkuszy w oknie “Obszary konsolidacji” (nie zadziała potem dynamicznie mieszanie kolejności arkuszy), ale i tak jest to bardzo wygodne.
.
Moje notatki -> tworzenie / uaktualnianie “AK_dodFunkcje.xlam”:
-
W pierwotnym pliku XLSX: Plik \ Informacje \ Pokaż wszystkie właściwości \ Tytuł … \ Komentarze …
(tak powstaje ogólny opis dodatku widoczny w: Plik \ Opcje \ Dodatki) - Developer \ Visual Basic
- Import File “AK_dodFunkcje.bas “ (Module1)
- [F2], search “Module1” (VBAProj Module1)
- Members of…
- prawy.kl.m. na każdej f.: Properties (tak powstaje opis widoczny w pomocy funkcji) (istotne są też wymowne nazwy parametrów - przywołanie parametrów: [Ctrl+Shift+A])
- Zamykam Developer (bez zapisu). Zapisuję plik XLSX jako XLAM, np.”AK_dodFunkcje_2.xlam”.
- Po zamknięciu wszelkich plików Excela podmieniam nazwę na “AK_dodFunkcje.xlam”