Excel Forum - Porady, Pomoc,  Excel Help, Excel FAQ Strona Główna
 FAQ  RegulaminRegulamin  Szukaj   Użytkownicy   Grupy   Rejestracja   Profil   Twoje wiadomości   Zaloguj 


Poprzedni temat «» Następny temat
ID tematu: 76178 Skopiuj do schowka Dostępność po 2 kanałach
Autor Wiadomość
darko2000 
Fan Excela


Wersja: Win Office 2019
Posty: 76
Wysłany: 15-10-2024, 14:18   Dostępność po 2 kanałach

Potrzebuję obliczyć dostępność (może jakiś jeden przycisk makra) produktów w poszczególnych kanałach i sklepach.
Przykładowo żeby tworzyło się coś takiego jak w pliku dostepnosc.xlsx arkusze „HYP”, „HYC”, „SUP” (teraz ręcznie to wybrałem). Oczywiście te arkusze do końcowego wyniku mogą być niepotrzebne.

Ean 524023890000006 z arkusza „Ean” wiem, że powinien być tylko w wynikach arkusza „HYP”. W arkuszu "Dane" jak go wyfiltruje i wezmę tylko sklepy HYP to widzę, że jest tylko w HYP2, HYP3, HYP6.
Ean 524018520000006 z arkusza „Ean” wiem, że powinien być w wynikach w trzech arkuszach „HYP”, „HYC”, „SUP”.
Potrzebuję żeby makro przyporządkowało tak wszystkie dane z arkusza ”Dane” (może być różna ilość rekordów).

Końcowy wynik powinien być coś w tym stylu:
HYP1: 25 produkty na 100, HYP2: 12 produktów na 100 itd.
HYC1: 13 produktów na 94, HYC2: 52 produkty na 94 itd.
SUP1: 15 produktów na 81, SUP2: 43 produkty na 81 itd.

dostepnosc.xlsx
Pobierz Plik ściągnięto 20 raz(y) 347.51 KB

ID posta: 437342 Skopiuj do schowka
 
 
Kaper 



Zaproszone osoby: 2
Wersja: Win Office 365
Pomógł: 4533 razy
Posty: 9050
Wysłany: 22-10-2024, 19:03   

Myślę, że najwygodniej zrobić to za pomocą Pobierz i przekształć Dane (czyli Power Query).

Gdybyś bardzo upierał się, żeby nie przerabiać obu tabel z danymi na tabele Excela, trzeba by to zrobić nie "pobierz dane z tabeli" ale "pobierz dane z pliku excela". Ja zrobiłem pobierając dane z tabel (pozwalając Excelowi by przekształcił je w tabele excela).

Najpierw tylko zapytanie (bez tabeli wynikowej) zliczające kody EAN w grupach:
Kod:
let
    Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"PLU", type text}, {"Nazwa produktu", type text}, {"HYP", Int64.Type}, {"HYC", Int64.Type}, {"SUP", Int64.Type}}),
    #"Unpivoted Only Selected Columns" = Table.Unpivot(#"Changed Type", {"HYP", "HYC", "SUP"}, "Typ", "Value"),
    #"Grouped Rows" = Table.Group(#"Unpivoted Only Selected Columns", {"Typ"}, {{"Licznik", each Table.RowCount(_), Int64.Type}})
in
    #"Grouped Rows"
To dosłownie 3 kliknięcia (każde generujące jedną linię kodu m), a jedyna ingerencja - w tym wypadku zbędna, bo i tak nie korzystamy, to zmiana typu pola EAN na tekstowe, na wypadek gdyby pojawił się kod zaczynający od 0.

I drugie zapytanie, które najpierw policzy unikatowe eany dla każdego ze sklepów , a potem połączy z danymi dla tego typu sklepów z powyższego zapytania. nazwę sklepu podzieliłem, a nie tylko wyodrębniłem 3 pierwsze znaki jako typ, bo tak jak jest sortowałyby się SUP1, SUP10, SUP11, ... SUP19, SUP2, SUP20, SUP21 ...
Też w sumie niewiele, bo 6 poleceń (można powiedzieć 7 bo pierwsza zmiana typu to znowu ingerencja w typ EANa, ale już druga zmiana typu została automatycznie dodana przez PQ, więc jej nie liczę :)) :

Kod:
let
    Source = Excel.CurrentWorkbook(){[Name="Table2"]}[Content],
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"Ean", type text}, {"Nazwa", type text}, {"Sklep", type text}}),
    #"Grouped Rows" = Table.Group(#"Changed Type", {"Sklep"}, {{"Licznik_Sklep", each Table.RowCount(Table.Distinct(_)), Int64.Type}}),
    #"Duplicated Column" = Table.DuplicateColumn(#"Grouped Rows", "Sklep", "Sklep - Copy"),
    #"Split Column by Position" = Table.SplitColumn(#"Duplicated Column", "Sklep - Copy", Splitter.SplitTextByPositions({0, 3}, false), {"Sklep - Copy.1", "Sklep - Copy.2"}),
    #"Changed Type1" = Table.TransformColumnTypes(#"Split Column by Position",{{"Sklep - Copy.1", type text}, {"Sklep - Copy.2", Int64.Type}}),
    #"Sorted Rows" = Table.Sort(#"Changed Type1",{ {"Sklep - Copy.1", Order.Ascending}, {"Sklep - Copy.2", Order.Ascending}}),
    #"Merged Queries" = Table.NestedJoin(#"Sorted Rows", {"Sklep - Copy.1"}, EAN, {"Typ"}, "EAN", JoinKind.LeftOuter),
    #"Expanded EAN" = Table.ExpandTableColumn(#"Merged Queries", "EAN", {"Licznik"}, {"Licznik"}),
    #"Removed Columns" = Table.RemoveColumns(#"Expanded EAN",{"Sklep - Copy.1", "Sklep - Copy.2"})
in
    #"Removed Columns"


Wynik można oczywiście przerabiać - ja zostawiłem w układzie trzykolumnowym sklep, liczba, liczba dla typu w arkuszu Wynik.

Aby odświeżyć dane po zmianie prawoklik na zielonej tabeli i Odśwież.

PS zostawiłem te dodatkowe arkusze, ale ani z nich, ani z dodatkowych kolumn w arkuszu z danymi ze sklepów nie korzystałem.

dostepnosc.xlsx
Pobierz Plik ściągnięto 19 raz(y) 364.37 KB

_________________
Kaper Jej Królewskiej Mości :boss

Jeśli dane będą torturowane dość długo, przyznają się do wszystkiego
ID posta: 437369 Skopiuj do schowka
 
 
darko2000 
Fan Excela


Wersja: Win Office 2019
Posty: 76
Wysłany: 26-10-2024, 15:04   

dzięki za pomoc, szkoda tylko, że strona znowu tydzień nie działała, musiałem sobie jakoś poradzić :beer
ID posta: 437454 Skopiuj do schowka
 
 
Kaper 



Zaproszone osoby: 2
Wersja: Win Office 365
Pomógł: 4533 razy
Posty: 9050
Wysłany: 28-10-2024, 10:21   

:-(

Nas też martwią problemy ze stroną. Ostatnio były dwa razy - ten drugi dość szybko usunięty, ale ten pierwszy faktycznie trwał kilka dni.
_________________
Kaper Jej Królewskiej Mości :boss

Jeśli dane będą torturowane dość długo, przyznają się do wszystkiego
ID posta: 437457 Skopiuj do schowka
 
 
Wyświetl posty z ostatnich:   
Odpowiedz do tematu
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Nie możesz załączać plików na tym forum
Możesz ściągać załączniki na tym forum
Dodaj temat do Ulubionych
Wersja do druku

Skocz do:  

Powered by phpBB modified by Przemo © 2003 phpBB Group
Theme xandgreen created by spleen& Programosy modified v0.3 by warna
Opieka techniczna www.wip.pl

Archiwum

Strona uĹźywa plikĂłw cookies.

Kliknij tutaj, żeby dowiedzieć się jaki jest cel używania cookies oraz jak zmienić ustawienia cookie w przegl�darce.
Korzystając ze strony użytkownik wyraża zgodę na używanie plików cookies, zgodnie z bieżącymi ustawieniami przeglądarki.
SprawdĹş, w jaki sposĂłb przetwarzamy dane osobowe