<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>NetWorkingDays &#8211; SkuteczneRaporty.pl</title>
	<atom:link href="https://skuteczneraporty.pl/tag/networkingdays/feed/" rel="self" type="application/rss+xml" />
	<link>https://skuteczneraporty.pl</link>
	<description>Zautomatyzuj raportowanie w swojej firmie. Praktyczna wiedza dla analityków, kontrolerów i menedżerów.</description>
	<lastBuildDate>Wed, 18 Sep 2019 17:05:37 +0000</lastBuildDate>
	<language>pl-PL</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://skuteczneraporty.pl/wp-content/uploads/2025/09/cropped-skuteczneraporty-FAVICONA-1-32x32.png</url>
	<title>NetWorkingDays &#8211; SkuteczneRaporty.pl</title>
	<link>https://skuteczneraporty.pl</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Dni robocze między dwiema datami z uwzględnieniem polskich świąt w Power Query</title>
		<link>https://skuteczneraporty.pl/dni-robocze-miedzy-dwiema-datami-z-uwzglednieniem-polskich-swiat-w-power-query/</link>
					<comments>https://skuteczneraporty.pl/dni-robocze-miedzy-dwiema-datami-z-uwzglednieniem-polskich-swiat-w-power-query/#respond</comments>
		
		<dc:creator><![CDATA[Bartosz Czapiewski]]></dc:creator>
		<pubDate>Wed, 18 Sep 2019 17:05:37 +0000</pubDate>
				<category><![CDATA[Power Query]]></category>
		<category><![CDATA[edytor zaawansowany]]></category>
		<category><![CDATA[funkcje Power Query]]></category>
		<category><![CDATA[język M]]></category>
		<category><![CDATA[kurs Power Query]]></category>
		<category><![CDATA[NetWorkingDays]]></category>
		<guid isPermaLink="false">https://excelbi.pl/?p=10082</guid>

					<description><![CDATA[Sezon urlopowy powoli dobiega końca, a do kolejnej dłuższej przerwy pozostało kilka tygodni. Ile dni roboczych konkretnie? Zwykle nie pracujemy 7 dni w tygodniu, zatem odpowiedzią wcale nie jest liczba tygodni razy 7. Na drodze stoją nam bowiem takie przeszkody jak weekendy i święta. Jak obliczyć liczbę dni roboczych między 2 datami w Power Query? [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>Sezon urlopowy powoli dobiega końca, a do kolejnej dłuższej przerwy pozostało kilka tygodni. Ile dni roboczych konkretnie? Zwykle nie pracujemy 7 dni w tygodniu, zatem odpowiedzią wcale nie jest liczba tygodni razy 7. Na drodze stoją nam bowiem takie przeszkody jak weekendy i święta. Jak obliczyć liczbę dni roboczych między 2 datami w Power Query?<span id="more-10082"></span></p>



<h1 class="wp-block-heading">Gdy Excel bywa lepszy niż Power Query</h1>



<p>Policzenie liczby dni roboczych w Excelu nie stanowi żadnego problemu – wystarczy funkcja DNI.ROBOCZE (ang. <em>NETWORKDAYS</em>), by zrobić to za jednym przeciągnięciem formuły. Jak z tym jest w Power Query? Niestety odpowiednik funkcji DNI.ROBOCZE trzeba stworzyć samodzielnie w języku M w Power Query. Skoro i tak musimy stworzyć własne rozwiązanie, warto uwzględnić w takiej funkcji świąteczne dni wolne od pracy dla Polski. Do dzieła!</p>



<p>Inspiracją do tego artykułu jest <a href="https://www.powerquery.training/networkdays/" target="_blank" rel="noopener">wpis</a> Dominika Petri.</p>



<h1 class="wp-block-heading">Algorytm funkcji DNI.ROBOCZE</h1>



<p>Algorytm to wszystkie kroki, które powinien wykonać program (lub w tym przypadku funkcja), które są niezbędne, aby otrzymać pożądany efekt. W naszej funkcji zastosujemy ten sam algorytm, o którym pisze Dominik, ale dodatkowo uwzględnimy tabelę z wypisanymi datami świąt w latach 2019–2020. Zatem:<br />• Stworzymy listę wszystkich dat między datą początkową i końcową,<br />• Dodamy kolumnę z informacją o dniu tygodnia,<br />• Dodamy kolumnę z informacją, czy dany dzień był dniem świątecznym wolnym od pracy (nowość),<br />• Zaktualizujemy dni tygodnia, by dni świąteczne wyświetlały się jako szczególny dzień (nowość),<br />• Wyfiltrujemy soboty i niedziele oraz dni świąteczne,<br />• Liczba dni roboczych jest równa liczbie pozostałych dni na liście, czyli liczbie wierszy.</p>



<h1 class="wp-block-heading">Liczba dni roboczych w Power Query krok po kroku</h1>



<p>Zacznijmy od listy dat między datą początkową i końcową. W zakładce Strona główna &gt; Dane zewnętrzne kliknij na strzałkę poniżej Pobierz dane i wybierz Puste zapytanie.</p>



<figure class="wp-block-image"><img decoding="async" class="wp-image-10136" src="https://skuteczneraporty.pl/wp-content/uploads/2019/09/Dni-robocze-mi%C4%99dzy-dwiema-datami-z-uwzgl%C4%99dnieniem-polskich-%C5%9Bwi%C4%85t-w-Power-Query-1.png" alt="Dni robocze między dwiema datami z uwzględnieniem polskich świąt w Power Query"></figure>



<p>Otworzy się edytor Power Query wraz z możliwością wpisania formuły pierwszej funkcji. Na początek skorzystamy z funkcji List.Dates wpisując komendę <code>=List.Dates</code> i klikając Enter.</p>



<figure class="wp-block-image"><img decoding="async" class="wp-image-10138" src="https://skuteczneraporty.pl/wp-content/uploads/2019/09/Dni-robocze-mi%C4%99dzy-dwiema-datami-z-uwzgl%C4%99dnieniem-polskich-%C5%9Bwi%C4%85t-w-Power-Query-2.png" alt="Dni robocze między dwiema datami z uwzględnieniem polskich świąt w Power Query 1"></figure>



<p>Funkcja ta przyjmuje 3 argumenty: datę początkową, liczbę wierszy z datami, które mają się pokazać oraz jaki jest odstęp między kolejnymi datami. Wpiszemy przykładowe parametry i klikniemy Wywołaj. Załóżmy, że chcemy policzyć liczbę dni roboczych od 31 października 2019 w ciągu następnych 15 dni.</p>



<figure class="wp-block-image"><img decoding="async" class="wp-image-10139" src="https://skuteczneraporty.pl/wp-content/uploads/2019/09/Dni-robocze-mi%C4%99dzy-dwiema-datami-z-uwzgl%C4%99dnieniem-polskich-%C5%9Bwi%C4%85t-w-Power-Query-3-1024x456.png" alt="Dni robocze między dwiema datami z uwzględnieniem polskich świąt w Power Query 2"></figure>



<p>Efektem tego zapytania jest lista, którą należy przekonwertować do formatu tabeli. W zakładce Przekształć w Narzędziach do obsługi list kliknij Konwertuj &gt; Do tabeli i skorzystaj z automatycznych stawień konwertera.</p>



<figure class="wp-block-image"><img decoding="async" class="wp-image-10140" src="https://skuteczneraporty.pl/wp-content/uploads/2019/09/Dni-robocze-mi%C4%99dzy-dwiema-datami-z-uwzgl%C4%99dnieniem-polskich-%C5%9Bwi%C4%85t-w-Power-Query-4.png" alt="Dni robocze między dwiema datami z uwzględnieniem polskich świąt w Power Query 3"></figure>



<p>Dostaniesz tabelę, która jest gotowa do dalszej obróbki. Zwróć uwagę na kilka elementów. Po pierwsze (1) w pasku do wpisywania funkcji pokazał się kod, który tę tabelę wygenerował. Po drugie (2) po prawej stronie w pasku Ustawienia zapytania w zakładce Zastosowane kroki możesz śledzić, co po kolei było wykonywane w obróbce tabeli. Zauważ, że w funkcji (tekst w pasku na górze) odwołujemy się do efektu poprzedniego przekształcenia – wykorzystana funkcja Table.FromList korzysta ze zmiennej Źródła (3).</p>



<figure class="wp-block-image"><img decoding="async" class="wp-image-10141" src="https://skuteczneraporty.pl/wp-content/uploads/2019/09/Dni-robocze-mi%C4%99dzy-dwiema-datami-z-uwzgl%C4%99dnieniem-polskich-%C5%9Bwi%C4%85t-w-Power-Query-5-1024x385.png" alt="Dni robocze między dwiema datami z uwzględnieniem polskich świąt w Power Query 4"></figure>



<p>Następnie dodajmy kolumnę z dniami tygodnia. Kliknij Dodaj kolumnę &gt; Z daty i godziny, a następnie strzałkę pod ikonką Data &gt; Dzień &gt; Dzień tygodnia.</p>



<figure class="wp-block-image"><img decoding="async" class="wp-image-10142" src="https://skuteczneraporty.pl/wp-content/uploads/2019/09/Dni-robocze-mi%C4%99dzy-dwiema-datami-z-uwzgl%C4%99dnieniem-polskich-%C5%9Bwi%C4%85t-w-Power-Query-6.png" alt="Dni robocze między dwiema datami z uwzględnieniem polskich świąt w Power Query 5"></figure>



<p>Power Query numeruje dni od 0 do 6; 0 to pierwszy dzień tygodnia. Jak zidentyfikować, od którego z nich zaczyna się tydzień? Można kalendarzem, ale także ustawiając to jasno w kodzie. Do wyświetlonej w górnym pasku formuły dopisz po przecinku <code>Day.Monday</code> zaraz za [Column1].</p>



<p>Twoim pierwszym dniem tygodnia wcale nie musi być poniedziałek. Gdy wpisywałeś formułę zapewne zauważyłeś, że jako początkowy można ustawić każdy dzień tygodnia. Zobacz też, w jaki sposób Power Query odwołuje się do wcześniej zastosowanych kroków; z użyciem krzyżyka # i wpisując nazwę w cudzysłów.</p>



<p>Dodajmy dni świąteczne w Polsce w latach 2019–2020. Z <a href="https://www.kalendarzswiat.pl/swieta/wolne_od_pracy/2019" target="_blank" rel="noopener">tej</a> i <a href="https://www.kalendarzswiat.pl/swieta/wolne_od_pracy/2020" target="_blank" rel="noopener">tej</a> strony skopiowałem i wkleiłem do Excela wszystkie świąteczne dni w Polsce.</p>



<p>Przez Power Query na Stronie głównej w Nowe zapytanie &gt; Nowe Źródło &gt; Excel wgrałem plik do Power BI.</p>



<figure class="wp-block-image"><img decoding="async" class="wp-image-10143" src="https://skuteczneraporty.pl/wp-content/uploads/2019/09/Dni-robocze-mi%C4%99dzy-dwiema-datami-z-uwzgl%C4%99dnieniem-polskich-%C5%9Bwi%C4%85t-w-Power-Query-7-1024x626.png" alt="Dni robocze między dwiema datami z uwzględnieniem polskich świąt w Power Query 6"></figure>



<p>Po kliknięciu OK nowa tabela znajdzie się po lewej stronie w bazie Zapytań. Wróć do tabeli z funkcją, automatycznie nazwaną <em>Wywołano funkcję</em>. Połączmy ją z tabelą z datami ze świętami scalaniem lewym zewnętrznym po dacie (więcej o rodzajach scalania tabel znajdziecie <a href="https://skuteczneraporty.pl/powerquery-cz-2-scalanie-oraz-dolaczanie/">tu</a>).</p>



<figure class="wp-block-image"><img decoding="async" class="wp-image-10144" src="https://skuteczneraporty.pl/wp-content/uploads/2019/09/Dni-robocze-mi%C4%99dzy-dwiema-datami-z-uwzgl%C4%99dnieniem-polskich-%C5%9Bwi%C4%85t-w-Power-Query-8.png" alt="Dni robocze między dwiema datami z uwzględnieniem polskich świąt w Power Query 7"></figure>



<p>Rozpakuj dołączoną kolumnę klikając w znaczek w prawym górnym rogu dodanej kolumny. Odznacz datę – wystarczy sama nazwa święta dla lepszej orientacji – a następnie kliknij OK.</p>



<p>Stwórzmy nową kolumnę, w której dni świąteczne przyjmą wspólną wartość poza dniami tygodnia, np. 7. Posłużymy się dodawaniem kolumny warunkowej, którą można znaleźć w zakładce Dodaj kolumnę &gt; Ogólne &gt; Kolumna warunkowa. Jeśli przy dacie nie ma żadnego święta (jest NULL w kolumnie), ma przyjąć, że dzień jest standardowy. Jeśli jest to święto, zamienia dzień na 7.</p>



<figure class="wp-block-image"><img decoding="async" class="wp-image-10145" src="https://skuteczneraporty.pl/wp-content/uploads/2019/09/Dni-robocze-mi%C4%99dzy-dwiema-datami-z-uwzgl%C4%99dnieniem-polskich-%C5%9Bwi%C4%85t-w-Power-Query-9-1024x482.png" alt="Dni robocze między dwiema datami z uwzględnieniem polskich świąt w Power Query 8"></figure>



<p>Efektem zapytania jest kolumna Dni robocze.</p>



<p>Kliknij na strzałkę w prawym górnym rogu dodanej kolumny i odfiltruj sobotę, niedzielę oraz święta (wartości 5, 6 i 7) i wciśnij OK.</p>



<figure class="wp-block-image"><img decoding="async" class="wp-image-10146" src="https://skuteczneraporty.pl/wp-content/uploads/2019/09/Dni-robocze-mi%C4%99dzy-dwiema-datami-z-uwzgl%C4%99dnieniem-polskich-%C5%9Bwi%C4%85t-w-Power-Query-10.png" alt="Dni robocze między dwiema datami z uwzględnieniem polskich świąt w Power Query 9"></figure>



<p>To tabela końcowa! Liczba wierszy, które pozostały to liczba dni roboczych między 31 października 2019 a 14.11.2019. Policzymy je funkcją <code>Table.RowCount</code> Naciśnij ikonkę fx i przed #&#8221;Przefiltrowano wiersze&#8221; wpisz Table.RowCount tak jak na obrazku. Pamiętaj o nawiasach okrągłych!</p>



<figure class="wp-block-image"><img decoding="async" class="wp-image-10147" src="https://skuteczneraporty.pl/wp-content/uploads/2019/09/Dni-robocze-mi%C4%99dzy-dwiema-datami-z-uwzgl%C4%99dnieniem-polskich-%C5%9Bwi%C4%85t-w-Power-Query-11.png" alt="Dni robocze między dwiema datami z uwzględnieniem polskich świąt w Power Query 10"></figure>



<p>Wciśnij Enter. Pojawi Ci się już nie tabela, ale sama liczba – liczba wierszy w tabeli, która pozostała.</p>



<p>Uwzględnimy jeszcze jeden parametr – jeśli data początkowa, od której chcemy policzyć liczbę dni jest późniejsza niż data końcowa, to różnica między datami jest liczbą ujemną. Zamień zatem kod zliczający wiersze na</p>



<p><code>= if Początek &lt;= Koniec then Table.RowCount(#"Przefiltrowano wiersze") else Table.RowCount(#"Przefiltrowano wiersze") * (-1)</code></p>



<figure class="wp-block-image"><img decoding="async" class="wp-image-10148" src="https://skuteczneraporty.pl/wp-content/uploads/2019/09/Dni-robocze-mi%C4%99dzy-dwiema-datami-z-uwzgl%C4%99dnieniem-polskich-%C5%9Bwi%C4%85t-w-Power-Query-13-1024x334.png" alt="Dni robocze między dwiema datami z uwzględnieniem polskich świąt w Power Query 11"></figure>



<p>Ups, mamy błąd! Wynika on z użycia nazw, które nie są zdefiniowane – Początek i Koniec będą naszymi datami początkowymi i końcowymi w funkcji docelowej. Zatem napiszmy funkcję!</p>



<h1 class="wp-block-heading">Zamiana przykładowej procedury na funkcję</h1>



<p>Power Query i jego Zastosowane kroki w Ustawieniach zapytania działają trochę analogicznie jak nagrywanie makr w Excelu. Zapisują się Twoje kroki w obróbce danych, by potem nie dość, że móc do nich wrócić, to jeszcze bez znajomości języka M korzystać z gotowych wygenerowanych kodów przy przekształceniach na funkcje.</p>



<p>Pod ścieżką Strona główna &gt; Zapytanie &gt; Edytor zaawansowany ukryte jest pole do pisania poleceń w języku M. Zobaczysz wszystkie kroki, które wykonaliśmy, by dojść od wygenerowania ciągu dat do liczby dni roboczych i błędu w związku z nazwami.</p>



<figure class="wp-block-image"><img decoding="async" class="wp-image-10149" src="https://skuteczneraporty.pl/wp-content/uploads/2019/09/Dni-robocze-mi%C4%99dzy-dwiema-datami-z-uwzgl%C4%99dnieniem-polskich-%C5%9Bwi%C4%85t-w-Power-Query-14-1024x285.png" alt="Dni robocze między dwiema datami z uwzględnieniem polskich świąt w Power Query 12"></figure>



<p>Zacznijmy od definicji zmiennych, które będziemy wprowadzać do funkcji. W 11 linijce wykorzystujemy Początek i Koniec, które są datami początkowymi i końcowymi. Efektem działania funkcji jest zmienna o typie liczby – liczba dni roboczych. W pierwszej linijce wpisz zatem:</p>



<p><code>(Początek as date, Koniec as date) as number =&gt;</code></p>



<p>i wciśnij Enter. Wprowadzimy jeszcze kilka zmian; rozbijemy Źródło na funkcję i wywołanie dat. Teraz</p>



<p> Źródło odwołuje się do wcześniej stworzonego zapytania. Wstawmy tam samą funkcję List.Dates, a linijkę niżej dopiszmy jej wywołanie według wzoru:</p>



<p><code>Źródło = List.Dates,#"Wywołanie dat" = Źródło(#date(2019, 10, 31), 15, #duration(1, 0, 0, 0)), <br />#"Przekonwertowane na tabelę" = Table.FromList(#"Wywołanie dat", Splitter.SplitByNothing(), null, null, ExtraValues.Error), </code></p>



<p>Kod powinien wyglądać tak:</p>



<figure class="wp-block-image"><img decoding="async" class="wp-image-10150" src="https://skuteczneraporty.pl/wp-content/uploads/2019/09/Dni-robocze-mi%C4%99dzy-dwiema-datami-z-uwzgl%C4%99dnieniem-polskich-%C5%9Bwi%C4%85t-w-Power-Query-15-1024x372.png" alt="Dni robocze między dwiema datami z uwzględnieniem polskich świąt w Power Query 13"></figure>



<p>Dlaczego zmieniamy aż 3 linijki? W każdej kolejnej odwołujemy się do wyników poprzedniego zapytania; dodając środkowe, trzeba zadbać o odpowiednie nazwy argumentów w następnej linijce. Na koniec pracy w kodzie zamieńmy stałe parametry wywołania funkcji List.Dates na te zależne od Początku i Końca. Zamień linijkę dotyczącą #”Wywołania dat” na:</p>



<p><code>#"Wywołanie dat" = <br /> if Początek &lt;= Koniec then <br /> Źródło(Początek, Duration.Days(Koniec-Początek)+1, Duration.From(1)) <br /> else <br /> Źródło(Koniec, Duration.Days(Początek-Koniec)+1,Duration.From(1)), </code></p>



<p>Gdy wciśniesz Gotowe, Twoim oczom ukaże się interfejs do wprowadzenia dat początkowych i końcowych – właśnie stworzyłeś autorską funkcję niestandardową! Zanim jednak przykładowo ją wywołamy, zmień jej nazwę. Po lewej stronie, w Zapytaniach, widnieje nazwa <em>Wywołano funkcję</em>. Możesz dowolnie zmieniać nazwę; ja nadam jej nazwę DniRoboczeBezSwiat.</p>



<p>Spróbujmy ją wywołać.</p>



<figure class="wp-block-image"><img decoding="async" class="wp-image-10151" src="https://skuteczneraporty.pl/wp-content/uploads/2019/09/Dni-robocze-mi%C4%99dzy-dwiema-datami-z-uwzgl%C4%99dnieniem-polskich-%C5%9Bwi%C4%85t-w-Power-Query-16.png" alt="Dni robocze między dwiema datami z uwzględnieniem polskich świąt w Power Query 14"></figure>



<p>Działa! Spróbujmy teraz w prawdziwej tabeli z danymi. W Edytorze Power Query wybierz Narzędzia główne &gt; Zapytaj &gt; Zamknij i zastosuj, a następnie wgraj bazę szkoleniową ze sprzedażą w latach 2011–2014. Otwórzmy ją w Power Query, a następnie w Dodaj kolumnę &gt; Ogólne &gt; Wywołaj funkcję niestandardową jako Początek wprowadź Datę zamówienia, a jako Koniec Datę wysyłki. Kliknij OK.</p>



<p>Funkcja bez problemu policzy liczbę dni roboczych między datami w kolumnach.</p>



<h1 class="wp-block-heading">Szablon funkcji do pobrania w Power Query w Excelu</h1>



<p>Tu możesz pobrać <a href="https://skuteczneraporty.pl/wp-content/uploads/2019/09/Dni-robocze-w-Power-Query.zip">plik Excel z funkcją Power Query do liczenia dni roboczych</a> oraz plik z dniami świątecznymi (podmień jego ścieżkę w kroku Źródło).</p>
]]></content:encoded>
					
					<wfw:commentRss>https://skuteczneraporty.pl/dni-robocze-miedzy-dwiema-datami-z-uwzglednieniem-polskich-swiat-w-power-query/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
