LuckyTemplates で 2 つの日付間の就業日を計算する

休日をカウントするか、休日をカウントせずに、2 つの日付の間の稼働日を計算する方法を説明します。で何度も質問されてきたトピックです。

また、これがこのタイム インテリジェンス シリーズを締めくくるのに最適な方法になると信じています。これは、これまでに説明した他の多くの要素をカバーしていることを知っているからです。これらの要素には、休日テーブルの作成、拡張日付テーブルの作成、関数の使用などが含まれます。このチュートリアルの完全なビデオは、このブログの下部でご覧いただけます。

目次

2 つの日付間の勤務日を計算する方法

勤務日を計算するために使用できるさまざまなアプローチについて説明します。

Excel では、 NETWORKDAYS関数を使用して、勤務日を簡単に計算できます。ただし、DAX にはそのような機能がないため、これを回避する方法について説明します。

これを行う 1 つの方法は、拡張日付テーブルのいくつかの要素を使用することです。

もう 1 つのオプションは、thebiccountant.com ブログの Imke Feldmann から得たアプローチを使用することです。彼女は、Power Query から直接呼び出すことができるカスタム NetworkDays 関数を作成し、プロセスをはるかに高速化して複雑さを軽減しました。

これらのアプローチがどのように機能するかを示すために、非常に一般的なシナリオを使用します。

匿名化したプロジェクトが 100 件あります。

LuckyTemplates で 2 つの日付間の就業日を計算する

各プロジェクトには開始日終了日もあります。

LuckyTemplates で 2 つの日付間の就業日を計算する

単純な経過日数メジャーも作成しました。これは基本的に、各開始日と終了日の間の生の日数です。関数を使用しました。これは、営業日の日付を区別するのに便利な関数です。

LuckyTemplates で 2 つの日付間の就業日を計算する

データモデルは非常にシンプルです。これには、日付プロジェクトのテーブルが含まれています。

LuckyTemplates で 2 つの日付間の就業日を計算する

また、プロジェクト ID開始日終了日を含むファクト テーブルも表示されます。

LuckyTemplates で 2 つの日付間の就業日を計算する

比較のために、Excel (Power Bi ではない) を使用してNetworkDays (休日の有無にかかわらず) も計算しました。

LuckyTemplates で 2 つの日付間の就業日を計算する

もちろん、同じことをして Excel からデータを取り込むこともできます。ただし、ここでの目標は、Excel を使用せずに LuckyTemplates を使用して稼働日数を計算することです。

DAX を使用した日付間の勤務日の計算

日付のカウントを扱う場合は、Dates テーブルで

LuckyTemplates で 2 つの日付間の就業日を計算する

また、DATESBETWEENを使用して 、開始日と終了日の間のフィールドを絞り込みました。また、IsWorkingDayを追加して、就業日の場合はである必要があるという単純なブール ロジックを適用しました。を返します

スライサーのコンテキストを考慮するために、フィルターで仕上げました。

休日を含むバージョンに関しては、今説明した措置と非常に似ています。

LuckyTemplates で 2 つの日付間の就業日を計算する

これは、 DATESBETWEEN関数を使用した場合と同じ式です。とIsHolidayだけ追加しました

LuckyTemplates で 2 つの日付間の就業日を計算する

ここでも最後にALLSELECTED関数を使用しました。

これら 2 つのメジャーをテーブルにドラッグするとどうなるかを見てください。

LuckyTemplates で 2 つの日付間の就業日を計算する

予想どおり、休日を含む勤務日は Excel の休日を含む列と完全に一致します同じことが休日なしの勤務日列にも当てはまり、休日なしの Excel 列と一致します

Power Query を使用した勤務日の計算

thebiccountant.com ブログの Imke Feldmann が説明しているアプローチは、Power Query を使用する場合にさらに簡単なソリューションを提供します。

NETWORKDAYS 関数に関する彼女のブログの中で、Power Query で呼び出すことができる M コードを提供しました。

LuckyTemplates で 2 つの日付間の就業日を計算する

彼女のブログから M コードをコピーするだけです。

LuckyTemplates で 2 つの日付間の就業日を計算する

次に、Power Queryに移動し、 [新しいソース]で空のクエリを開きます

LuckyTemplates で 2 つの日付間の就業日を計算する

高度なエディターに移動します。

LuckyTemplates で 2 つの日付間の就業日を計算する

次に、コード全体をページに貼り付けます。コードにエラーがないことを確認するには、緑色のチェックが付いていることを確認してください。

LuckyTemplates で 2 つの日付間の就業日を計算する

呼び出すと、このテンプレートが表示されます。

LuckyTemplates で 2 つの日付間の就業日を計算する

ここに何を入力するかはあまり重要ではないので、2018 年 1 月 1 日から 2020 年 1 月 1 日までとします。

LuckyTemplates で 2 つの日付間の就業日を計算する

これで、クエリの下に表示されるようになります。後で使いやすいように名前を変更します。

LuckyTemplates で 2 つの日付間の就業日を計算する

Networkdaysという名前にします。

LuckyTemplates で 2 つの日付間の就業日を計算する

これで、そのクエリの使用を開始できます。Dataに進みます。

LuckyTemplates で 2 つの日付間の就業日を計算する

次に、[列の追加]で[カスタム関数の呼び出し]をクリックします。

LuckyTemplates で 2 つの日付間の就業日を計算する

これをNWDと呼び、Networkdays機能を使用します。

LuckyTemplates で 2 つの日付間の就業日を計算する

次に、以下のドロップダウン メニューから開始日終了日を選択します。

LuckyTemplates で 2 つの日付間の就業日を計算する

ここでは、週の始まりを月曜日から他のものに変更するオプションが提供されます。

LuckyTemplates で 2 つの日付間の就業日を計算する

この目的であれば月曜日で良いのでそのままにしておきます。次に、「OK」をクリックします。

LuckyTemplates で 2 つの日付間の就業日を計算する

ご覧のとおり、Excel の NetworkDays列に相当するNetworkDaysがすぐに計算されます。

LuckyTemplates で 2 つの日付間の就業日を計算する

ここで、休日を除外できるようにこれを微調整してみましょう。ホリデーテーブルに行くだけです。

LuckyTemplates で 2 つの日付間の就業日を計算する

テンプレートを思い出してください。ここでは、Holiday テーブルが 3 番目のパラメーターです。

LuckyTemplates で 2 つの日付間の就業日を計算する

したがって、ここでは休日テーブルを使用し、日付列を参照することにします。

LuckyTemplates で 2 つの日付間の就業日を計算する

ここでチェックマークをクリックして変更を適用します。

LuckyTemplates で 2 つの日付間の就業日を計算する

[00:11:00]
現在、更新され、すべての休日が削除されました。休日のないExcel NetworkDaysの列とまったく同じです。

LuckyTemplates で 2 つの日付間の就業日を計算する

この列の名前を「NWD 休日なし」に変更します。

LuckyTemplates で 2 つの日付間の就業日を計算する


日付テーブルに勤務日と週末の数値を追加する: LuckyTemplates のタイム インテリジェンス テクニック
DAX を使用して LuckyTemplates で勤務日の数値を紹介する Power
BI での平均を計算する: DAX を使用して平日または週末の結果を分離する

結論

私が使用した両方のアプローチは互いに大きく異なっていましたが、両方とも同じ結果が得られたことがわかります。これは、探している特定の Excel 関数に直接対応する関数がない場合でも、LuckyTemplates を最大限に活用する方法が実際にはたくさんあることを示しているだけです。

これは、Time Intelligence シリーズにとって素晴らしい成果でした。Melissa Dekorte と協力して、これらの素晴らしいタイム インテリジェンスのシナリオをすべて紹介するのは楽しかったです。

ここで特に強調したいことの 1 つは、DAX が LuckyTemplates の最も興味深い部分であるということです。ただし、LuckyTemplates の詳細をマスターすると、DAX がまったく関与しない他のソリューションの良さが分かるようになります。上で示した最後のアプローチと、タイム インテリジェンスの過去のビデオで共有したヒントがこの事実を証明しています。

ではごきげんよう、

Leave a Comment

Power Automate の文字列関数: Substring と IndexOf

Power Automate の文字列関数: Substring と IndexOf

Microsoft フローで使用できる 2 つの複雑な Power Automate String 関数、substring 関数とindexOf 関数を簡単に学習します。

LuckyTemplates でビジュアル ツールチップを作成する

LuckyTemplates でビジュアル ツールチップを作成する

LuckyTemplates ツールチップを使用すると、より多くの情報を 1 つのレポート ページに圧縮できます。効果的な視覚化の手法を学ぶことができます。

Power Automate で HTTP 要求を行う

Power Automate で HTTP 要求を行う

Power Automate で HTTP 要求を作成し、データを受信する方法を学んでいます。

LuckyTemplates で日付テーブルを作成する方法

LuckyTemplates で日付テーブルを作成する方法

LuckyTemplates で簡単に日付テーブルを作成する方法について学びましょう。データの分析と視覚化のための効果的なツールとして活用できます。

2 つの方法による SharePoint 列の検証

2 つの方法による SharePoint 列の検証

SharePoint 列の検証の数式を使用して、ユーザーからの入力を制限および検証する方法を学びます。

SharePoint リストを Excel または CSV ファイルにエクスポート

SharePoint リストを Excel または CSV ファイルにエクスポート

SharePoint リストを Excel ファイルおよび CSV ファイルにエクスポートする方法を学び、さまざまな状況に最適なエクスポート方法を決定できるようにします。

Power Automate のオンプレミス データ ゲートウェイ

Power Automate のオンプレミス データ ゲートウェイ

ユーザーがコンピューターから離れているときに、オンプレミス データ ゲートウェイを使用して Power Automate がデスクトップ アプリケーションにアクセスできるようにする方法を説明します。

DAX 数式での LASTNONBLANK の使用

DAX 数式での LASTNONBLANK の使用

DAX 数式で LASTNONBLANK 関数を使用して、データ分析の深い洞察を得る方法を学びます。

CROSSJOIN 関数の使用方法 – LuckyTemplates および DAX チュートリアル

CROSSJOIN 関数の使用方法 – LuckyTemplates および DAX チュートリアル

LuckyTemplates で予算分析とレポートを実行しながら、CROSSJOIN 関数を使用して 2 つのデータ テーブルをバインドする方法を学びます。

TREATAS 関数を使用して LuckyTemplates で仮想リレーションシップを作成する

TREATAS 関数を使用して LuckyTemplates で仮想リレーションシップを作成する

このチュートリアルでは、LuckyTemplates TREATAS を使用して数式内に仮想リレーションシップを作成する方法を説明します。