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: 63794 Skopiuj do schowka Power Query - Tygodnie
Autor Wiadomość
Pindelek 
Exceloholic


Pomógł: 1 raz
Posty: 130
Wysłany: 13-01-2019, 22:48   Power Query - Tygodnie

Witam,
Posiadam dwie tabele:
1) Tygodnie: wykaz wszystkich tygodni
2) tyg_początek_liczba_tyg, w której dla każdego zlecenia posiadam początkowy tydzień wraz z informacją o liczbie tygodni trwania danego zlecenia oraz liczba zleceń będzie ulegać zmianie, a tygodnie mogą obejmować przełom roku.

Efekt jaki chciałbym uzyskać pokazałem w arkuszu "dane_wyjściowe"

Prośba o pomoc w rozwiązaniu problemu przy użyciu Power Query.

forum.xlsx
Pobierz Plik ściągnięto 11 raz(y) 14.55 KB

ID posta: 360408 Skopiuj do schowka
 
 
jkb1906 
Exceloholic


Pomógł: 24 razy
Posty: 115
Wysłany: 14-01-2019, 09:51   

Cześć,

Jeśli dobrze zrozumiałem to do otrzymania oczekiwanego wyniku wystarczy ta 2ga tabelka.
Zobacz w załączniku.

Kod:
let
    Źródło = Excel.CurrentWorkbook(){[Name="tyg_początek_liczba_tyg"]}[Content],
    #"Zmieniono typ" = Table.TransformColumnTypes(Źródło,{{"Zlecenie", type text}, {"Początek", type text}, {"Liczba tyg", Int64.Type}, {"Wartość", Int64.Type}, {"Wartość tyg", Int64.Type}}),
    #"Dodano kolumnę niestandardową" = Table.AddColumn(#"Zmieniono typ", "Niestandardowe", each {1..[Liczba tyg]}),
    #"Rozwinięty element Niestandardowe" = Table.ExpandListColumn(#"Dodano kolumnę niestandardową", "Niestandardowe"),
    #"Wstawiony tekst za ogranicznikiem" = Table.AddColumn(#"Rozwinięty element Niestandardowe", "Tekst za ogranicznikiem", each Text.AfterDelimiter([Początek], "T"), type text),
    #"Zmieniono typ1" = Table.TransformColumnTypes(#"Wstawiony tekst za ogranicznikiem",{{"Tekst za ogranicznikiem", Int64.Type}}),
    #"Dodano kolumnę niestandardową1" = Table.AddColumn(#"Zmieniono typ1", "Niestandardowe.1", each [Tekst za ogranicznikiem]+[Niestandardowe]-1),
    #"Wyodrębnione pierwsze znaki" = Table.TransformColumns(#"Dodano kolumnę niestandardową1", {{"Początek", each Text.Start(_, 4), type text}}),
    #"Scalono kolumny" = Table.CombineColumns(Table.TransformColumnTypes(#"Wyodrębnione pierwsze znaki", {{"Niestandardowe.1", type text}}, "pl-PL"),{"Początek", "Niestandardowe.1"},Combiner.CombineTextByDelimiter("", QuoteStyle.None),"Scalone"),
    #"Zmieniono nazwy kolumn" = Table.RenameColumns(#"Scalono kolumny",{{"Scalone", "Początek"}}),
    #"Zmieniono kolejność kolumn" = Table.ReorderColumns(#"Zmieniono nazwy kolumn",{"Zlecenie", "Początek", "Liczba tyg", "Wartość", "Wartość tyg", "Niestandardowe", "Tekst za ogranicznikiem"}),
    #"Usunięto inne kolumny" = Table.SelectColumns(#"Zmieniono kolejność kolumn",{"Zlecenie", "Początek", "Wartość tyg"})
in
    #"Usunięto inne kolumny"


forum 2.xlsx
Pobierz Plik ściągnięto 9 raz(y) 24.14 KB

ID posta: 360423 Skopiuj do schowka
 
 
Pindelek 
Exceloholic


Pomógł: 1 raz
Posty: 130
Wysłany: 14-01-2019, 20:28   

jkb1906 dzięki za zainteresowaniem tematem.
Zapytanie działa nie do końca prawidłowo.
Problem pojawia się na przełamie lat.
Przykład w załączeniu.

forum_v2.xlsx
Pobierz Plik ściągnięto 9 raz(y) 24.41 KB

ID posta: 360448 Skopiuj do schowka
 
 
bodek 


Pomógł: 933 razy
Posty: 2629
Wysłany: 14-01-2019, 20:35   

Wystarczy drobna korekta "Dodano kolumnę warunkową"
Kod:
let
    Źródło = Excel.CurrentWorkbook(){[Name="tyg_początek_liczba_tyg"]}[Content],
    #"Zmieniono typ" = Table.TransformColumnTypes(Źródło,{{"Zlecenie", type text}, {"Początek", type text}, {"Liczba tyg", Int64.Type}, {"Wartość", Int64.Type}, {"Wartość tyg", Int64.Type}}),
    #"Dodano kolumnę niestandardową" = Table.AddColumn(#"Zmieniono typ", "Niestandardowe", each {1..[Liczba tyg]}),
    #"Rozwinięty element Niestandardowe" = Table.ExpandListColumn(#"Dodano kolumnę niestandardową", "Niestandardowe"),
    #"Wstawiony tekst za ogranicznikiem" = Table.AddColumn(#"Rozwinięty element Niestandardowe", "Tekst za ogranicznikiem", each Text.AfterDelimiter([Początek], "T"), type text),
    #"Zmieniono typ1" = Table.TransformColumnTypes(#"Wstawiony tekst za ogranicznikiem",{{"Tekst za ogranicznikiem", Int64.Type}}),
    #"Dodano kolumnę niestandardową1" = Table.AddColumn(#"Zmieniono typ1", "Niestandardowe.1", each [Tekst za ogranicznikiem]+[Niestandardowe]-1),
    #"Wyodrębnione pierwsze znaki" = Table.TransformColumns(#"Dodano kolumnę niestandardową1", {{"Początek", each Text.Start(_, 4), type text}}),
    #"Dodano kolumnę warunkową" = Table.AddColumn(#"Wyodrębnione pierwsze znaki", "Niestandardowe.2", each if [Niestandardowe.1] > 52 then [Niestandardowe.1]-52 else [Niestandardowe.1]),
    #"Usunięto kolumny" = Table.RemoveColumns(#"Dodano kolumnę warunkową",{"Niestandardowe.1"}),
    #"Scalono kolumny" = Table.CombineColumns(Table.TransformColumnTypes(#"Usunięto kolumny", {{"Niestandardowe.2", type text}}, "pl-PL"),{"Początek", "Niestandardowe.2"},Combiner.CombineTextByDelimiter("", QuoteStyle.None),"Scalone"),
    #"Zmieniono nazwy kolumn" = Table.RenameColumns(#"Scalono kolumny",{{"Scalone", "Początek"}}),
    #"Zmieniono kolejność kolumn" = Table.ReorderColumns(#"Zmieniono nazwy kolumn",{"Zlecenie", "Początek", "Liczba tyg", "Wartość", "Wartość tyg", "Niestandardowe", "Tekst za ogranicznikiem"}),
    #"Usunięto inne kolumny" = Table.SelectColumns(#"Zmieniono kolejność kolumn",{"Zlecenie", "Początek", "Wartość tyg"})
in
    #"Usunięto inne kolumny"


forum_v2_korekta.xlsx
Pobierz Plik ściągnięto 7 raz(y) 24.57 KB

_________________
Szkolenia z Excela, Power Query, Power Pivot, wizualizacje danych w Excelu
ID posta: 360449 Skopiuj do schowka
 
 
Bill Szysz 
Excel Expert


Pomógł: 779 razy
Posty: 3258
Wysłany: 14-01-2019, 22:38   

bodek, niestety raczej nie wystarczy :-( ((
Otrzymasz nie te cyfry roku na początku (czyli 19_T1 zamiast 20_T1)
Skoro już mamy tabelę tygodni to warto się nią posłużyć.
Propozycja w załączniku.
Oczywiście da się to wszystko zrobić dysponując jedynie Tabelą "tyg_początek_liczba_tyg" ale zadanie byłoby ciut bardziej skomplikowane (nie wszystkie lata mają 52 tygodnie - to jedna z trudności)

forum 2_BS.xlsx
Pobierz Plik ściągnięto 16 raz(y) 25.17 KB

_________________
Szkolenia z Power Query!!!

Pozdrawiam, były szbill62 aktualnie Bill Szysz
ID posta: 360453 Skopiuj do schowka
 
 
bodek 


Pomógł: 933 razy
Posty: 2629
Wysłany: 14-01-2019, 22:50   

Bill Szysz napisał/a:
Otrzymasz nie te cyfry roku na początku (czyli 19_T1 zamiast 20_T1)
ups, rzeczywiście masz rację, niedociągnięcie do poprawki
Bill Szysz napisał/a:
nie wszystkie lata mają 52 tygodnie
Stosując normę ISO, jednak wszystkie mają 52 tygodnie
_________________
Szkolenia z Excela, Power Query, Power Pivot, wizualizacje danych w Excelu
ID posta: 360455 Skopiuj do schowka
 
 
Bill Szysz 
Excel Expert


Pomógł: 779 razy
Posty: 3258
Wysłany: 15-01-2019, 00:02   

bodek napisał/a:
Stosując normę ISO, jednak wszystkie mają 52 tygodnie

Tu mnie zastrzeliłeś ;-) ....ale będę się upierał, że nawet w kalendarzu ISO rok ma 52 albo 53 tygodnie.
Poza tym, najpierw musielibyśmy napisać sobie zapytanie robiące nam kalendarz ISO, co też utrudniłoby zadanie (nie napisze tego każdy user....ale może znaleźć w sieci odpowiednią funkcję)
Oczywiście, to powyższe ma zastosowanie tylko wtedy, kiedy nie dysponujemy dodatkową Tabelą z numerami tygodni (czyli nie tak jak w przykładzie autora wątku)
_________________
Szkolenia z Power Query!!!

Pozdrawiam, były szbill62 aktualnie Bill Szysz
ID posta: 360459 Skopiuj do schowka
 
 
bodek 


Pomógł: 933 razy
Posty: 2629
Wysłany: 15-01-2019, 00:13   

Bill Szysz napisał/a:
Tu mnie zastrzeliłeś ....ale będę się upierał, że nawet w kalendarzu ISO rok ma 52 albo 53 tygodnie.
no i jednak mnie ..., coś mi się we łbie pokrochmaliło i ...
Masz rację, może mieć 53 tygodnie :-P , ciężki dzień.
_________________
Szkolenia z Excela, Power Query, Power Pivot, wizualizacje danych w Excelu
ID posta: 360461 Skopiuj do schowka
 
 
Bill Szysz 
Excel Expert


Pomógł: 779 razy
Posty: 3258
Wysłany: 15-01-2019, 11:00   

bodek, też tak nieraz mam ;-)
_________________
Szkolenia z Power Query!!!

Pozdrawiam, były szbill62 aktualnie Bill Szysz
ID posta: 360474 Skopiuj do schowka
 
 
Pindelek 
Exceloholic


Pomógł: 1 raz
Posty: 130
Wysłany: 16-01-2019, 20:03   

Dziękuję wszystkim za pomoc.
Wykorzystałem rozwiązanie Bill Szysz
ID posta: 360622 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.marketingNET.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