0
0 Produkty w koszyku

No products in the cart.

Zmiana ludzkiej tabelki na bardziej bazodanową — porada #280

Często dostaje dane, które są zapisany w wygodny dla człowieka sposób, ale bardzo niewygodny dla Excela.

porada-280-zamiana-ludzkiej-tabelki-na-bardziej-bazodanowa-power-query-01

Na podstawie danych nie da się stworzyć Tabeli Przestawnej i innych analiz danych dostępnych w Excelu. Trzeba je najpierw przekształcić .

Niedawno tego samego dnia dwóch ekspertów od Excela zamieściło filmy, w których znalazło się również rozwiązanie mojego problemu za pomocą Power Query.

Oz du Solei https://www.youtube.com/watch?v=EM15idCJXXU
Mike Girvin https://www.youtube.com/watch?v=_csX8sCzJd0

Więc jeśli masz taki sam problem jak ja zobacz jak go możesz rozwiązać za pomocą PowerQuery (jeśli nie możesz zainstalować u siebie tego dodatku do Excela zobacz porada 281, gdzie opisuję, jak to robię za pomocą formuł.
Pierwszą rzeczą, którą musimy zrobić to zamienić nasz zakres danych na tabelę, ale odznaczamy, że nasza tabela ma nagłówki. Ułatwi nam to później operacje. 

porada-280-zamiana-ludzkiej-tabelki-na-bardziej-bazodanowa-power-query-02

Zwróć uwagę, że miesiące były wpisywane w scalonych komórkach, a teraz się rozdzieliły. W odpowiednim kroku szybko to naprawimy. Najpierw musimy wczytać naszą tabelę do Power Query. Ponieważ mam w końcu Excel 2016, to robię to z karty dane (wcześniej musiałem instalować dodatek i korzystać z karty Power Query). 

porada-280-zamiana-ludzkiej-tabelki-na-bardziej-bazodanowa-power-query-04

Naszym danym nie jest potrzebna zmiana rodzaju danych, więc możemy ten krok usunąć.

porada-280-zamiana-ludzkiej-tabelki-na-bardziej-bazodanowa-power-query-03

Kolejnym krokiem będzie transponowanie danych.

porada-280-zamiana-ludzkiej-tabelki-na-bardziej-bazodanowa-power-query-05

Następnie możemy wykorzystać pierwszy wiersz danych jako nagłówki.

porada-280-zamiana-ludzkiej-tabelki-na-bardziej-bazodanowa-power-query-06

Kolejny krok to wypełnienie w dół kolumny miesiące, czyli wypełnianie pustych komórek wartościami, które znajdują się nad nimi (w pewnym momencie musi znaleźć się wypełniony wiersz ;))

porada-280-zamiana-ludzkiej-tabelki-na-bardziej-bazodanowa-power-query-08

Następnie musimy zaznaczyć 2 pierwsze kolumny i anulować przestawienie pozostałych kolumn.

porada-280-zamiana-ludzkiej-tabelki-na-bardziej-bazodanowa-power-query-07

Pozostaje jeszcze zmiana nazw kolumn (wystarczy, że klikniesz w nią dwukrotnie), żeby bardziej odpowiadały danym i już możesz je załadować do nowego arkusza Excela.
porada-280-zamiana-ludzkiej-tabelki-na-bardziej-bazodanowa-power-query-09

Dla naszych przykładowych danych powstało 720 wierszy, na podstawie których możesz już bez problemu stworzyć Tabelę Przestawną lub inaczej je analizować.

Pozdrawiam
Adam Kopeć
Miłośnik Excela

Dlaczego moja tabela się nie poszerza — porada #194

Jak naprawić tabelę, która się nie poszerza?

Dlaczego moja tabela się nie poszerza — porada #194 Dlaczego moja tabela się nie poszerza - porada #194

Kiedy Twoja tabela się nie poszerza to znaczy, że zmieniła się pewna opcja w autokorekcie Excela. Żeby przywrócić ją do poprzedniego stanu musisz wejść do menu Plik — Opcje — zakładka sprawdzanie — przycisk Opcje autokorekty — zakładka Autoformatowanie podczas pisania.
Tam są dwie opcje:
— Dołącz nowe wiersze i kolumny do tabeli
oraz
— Wypełnij formuły w tabelach w celu utworzenia kolumn obliczeniowych.

Pierwsza odpowiada za poszerzanie tabeli, a druga za automatyczne wypełnianie kolumny formułą do niej wpisaną.

P.S.

Jeśli chcesz dowiedzieć się więcej na temat Excela lub nie wiesz jak coś zrobić to napisz do mnie. Ja w miarę możliwości odpowiem na Twoje pytanie.

Excel i Adam - kontakt

Bezpośredni odnośnik do filmu na youtube — Dlaczego moja tabela się nie poszerza — porada #194

Max wyniki strzelania dynamicznie w tabeli malejąco — widzowie #28

Jak stworzyć posortowaną i dynamiczną tabelę z wynikami sesji strzeleckich?


Max wyniki strzelania dynamicznie w tabeli malejąco — widzowie #28

Max wyniki strzelania dynamicznie w tabeli malejąco - widzowie #28

Jak z tabeli wyników strzelania zawodników stworzyć tabelę, która będzie uporządkowywała wyniki od maksymalnego do minimalnego i żeby była dynamiczna.

Potrzebujemy funkcji:

=JEŻELI(ILE.WIERSZY($L$2:L2)>ILE.NIEPUSTYCH(Tabela14[Max]);"";MAX.K(Tabela14[Max];ILE.WIERSZY($L$2:L2)))

Do pokazania w kolejności wyników od max do min i obsłużeniem błędu, gdy wybierzemy więcej elementów niż jest na liście.

Formuła pod spodem posłuży by wypisać w odpowiedniej kolejności osoby, które osiągnęły wyniki od max do min:

=JEŻELI(ILE.WIERSZY($L$2:L2)>ILE.NIEPUSTYCH(Tabela14[Max]);"";INDEKS(Tabela14[[Nazwisko]:[Imię]];MIN.K(JEŻELI(Tabela14[Max]=[@[Max.k]];WIERSZ(Tabela14[Max])-WIERSZ($C$2)+1);LICZ.WARUNKI($L$2:$L2;$L2));LICZBA.KOLUMN($M$2:M2)))

Powyższa formuła jest formułą tablicową i trzeba ją zatwierdzić kombinacją klawiszy Ctrl + Shift + Enter.

Użyte funkcje:
MAX
MAX.K
ILE.WIERSZY
ILE.NIEPUSTYCH
INDEKS
LICZ.WARUNKI
WIERSZ
LICZBA.KOLUMN
MIN.K
JEŻELI
JEŻELI.BŁĄD

P.S.

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 — Max wyniki strzelania dynamicznie w tabeli malejąco — widzowie #28

Automatyczna tabela pomocniczej z tabeli głównej z dynamicznym kryterium — widzowie #26

Jak stworzyć tabelę pomocniczą, która będzie wyciągać automatycznie dane z tabeli głównej na podstawie kryterium?


Automatyczna tabela pomocniczej z tabeli głównej z dynamicznym kryterium — widzowie #26

Automatyczna tabela pomocniczej z tabeli głównej z dynamicznym kryterium - widzowie #26

W filmie Excel — Automatyczne wypełniana tabela pomocniczej z tabeli głównej z 1 kryterium — widzowie #25

wykorzystaliśmy formułę do pobierania danych z tabeli głównej do tabeli pomocniczej przy założeniu 1 kryterium

=JEŻELI.BŁĄD(INDEKS(Tabela13[#Dane];MIN.K(JEŻELI($A$5:$A$20=$G$2;WIERSZ(Fabryka)-WIERSZ($A$5)+1);ILE.WIERSZY($F$5:$F5));LICZBA.KOLUMN($A$5:A$5));"")

a co w sytuacji gdy chcemy, żeby nasze kryterium było dynamiczne?

Potrzebujemy zmodyfikować test logiczny w funkcji JEŻELI $A$5:$A$20=$G$2
tak, żeby przesuwał się po kolumnach tabeli głównej w zależności od kryterium jakie wybierzemy.

Nowy test logiczny będzie wyglądał tak:

PRZESUNIĘCIE($A$5:$A$20;0;PODAJ.POZYCJĘ($G$1;Tabela1[#Nagłówki];0)-1)=$G$2

wykorzystujemy funkcję PRZESUNIĘCIE do przesuwania się od pierwszej kolumny ($A$5:$A$20).
Drugi parametr (0) mówi nam, że nie chcemy się ruszać z pozycji startowej jeśli chodzi o wiersze. 

Trzeci parametr (PODAJ.POZYCJĘ($G$1;Tabela1[#Nagłówki];0)-1) podaje nam o ile kolumn chcemy się przesunąć w zależności od rodzaju kryterium (nagłówka, dla którego ustaliliśmy kryterium).
Po prostu szukamy, go, a właściwie jego pozycji w nagłówkach tabeli. Potrzebujemy tutaj funkcji PODAJ.POZYCJĘ i przeszukiwania dokładnego.
Ważne, że od wyniku funkcji PODAJ.POZYCJĘ potrzebujemy odjęć jedynkę ponieważ, jeśli kryterium jest z 1 kolumny nie chcemy się przesuwać (0 kolumn), jeśli z 2 kolumny to chcemy się przesunąć o 1 kolumnę itd.

Po skorygowaniu formuły wygląda ona tak:

=JEŻELI.BŁĄD(INDEKS(Tabela1;MIN.K(JEŻELI(PRZESUNIĘCIE($A$5:$A$21;0;PODAJ.POZYCJĘ($G$1;Tabela1[#Nagłówki];0)-1)=$G$2;WIERSZ($C$5:$C$21)-WIERSZ($A$5)+1);ILE.WIERSZY($F$5:$F5));LICZBA.KOLUMN($A$5:A$5));"")

i w zależności od dynamicznego kryterium daje odpowiednie wyniki.

Do stworzenia dynamicznego kryterium przydadzą Ci się informacje z filmów:

Dynamiczna zmiana listy rozwijanej na podstawie innej listy — porada #83

Wyszukanie unikalnych nazw do dynamicznej listy rozwijanej z walidacją danych — sztuczki #47

P.S.

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 — Automatyczna tabela pomocniczej z tabeli głównej z dynamicznym kryterium — widzowie #26

Zmiana listy rozwijanej na podstawie innej listy dynamiczny rozrost — porada #84

Jak stworzyć dynamiczną listę zależną od drugiej listy, która rozrasta się wraz z dodawaniem nowych pozycji?


Zmiana listy rozwijanej na podstawie innej listy dynamiczny rozrost — porada #84

Zmiana listy rozwijanej na podstawie innej listy dynamiczny rozrost - porada #84

W filmie Zmiana listy rozwijanej na podstawie innej listy dynamiczny rozrost — porada #84

stworzyliśmy 2 listy rozwijane, przy czym wartości na drugiej zależały od tego co zostało wybrane na pierwszej liście. Uzyskaliśmy to dzięki nazwaniu zakresów i odwołaniu za pomocą funkcji ADR.POŚR.

Ale tamto rozwiązanie miało wadę — dopisanie wartości do listy nie powodowało pojawieniem się na liście, ponieważ obszary były ograniczone tylko do już wpisanych wartości.

Można co prawdę Przypisać do nazwy większy obszar, a nawet całą kolumnę, ale sprawia to, że na krótszych listach pojawiają się na końcu puste pola, które ciągną się tak długo, aż dorównają ilościom pozycjom na najdłuższej liście.

Kolejnym rozwiązaniem byłoby stworzenie tabeli na podanym obszarze nazw. I tu mogą pojawić się 2 niedogodności — albo część nazw nie będzie się pokrywać z wysokościom kolumn w tabeli, sprawi to, że te nazwy nie będą uaktualniane,, albo stworzymy nazwy, które się odwołują do całych kolumn, wtedy znów będą pojawiać się puste pola na końcu, ale obszary będą dopasowywać się automatycznie tak jak rośnie tabela.

Najelegantszym rozwiązanie byłoby dla każdej nazwy/obszaru stworzyć oddzielną tabelę. Dzięki temu nie tylko zakresy będą dynamiczne rozszerzać się wraz z odpowiednimi tabelami, ale również unikniemy pustych wierszy na końcu list.

Można też usuną formatowanie wynikające z tabeli, żeby lista wyglądała tak jak sobie tego życzysz.

P.S.

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

Excel i Adam - kontakt

Bezpośredni odnośnik do filmu na youtube — Zmiana listy rozwijanej na podstawie innej listy dynamiczny rozrost — porada #84