しごと自動化レシピ

WORK RECIPE Power Query

Power Queryで24時間超の経過時間の総時間と時部分を比べる

24時間超の経過時間の総時間と時部分を比べる手順です。27時間の総時間は27ですが、時部分だけでは3になります。 入力表と完成表を並べ、Mコードが変える列や行を具体的な架空データで確かめます。元のデータへ直接書き戻さず、更新可能なクエリとして保存する形にします。

時間数 → 時間数(作業の流れを表す概念図)
変換処理を実機確認

Windows版ExcelのPower Queryで、サンプルデータの変換結果を確認しました。

確認日:2026年10月19日(日本時間)

確認した内容と、確認していない範囲

確認した範囲

  • 掲載M全文を専用ExcelのPower Queryエンジンで実行
  • 入力例から独立に計算した期待表と列名・全行の値を照合

未確認・対象外

  • GUIクリック手順・他OS・他Excel版・実業務データ

数式・コードの処理結果を確認した記録です。記事の全画面操作を確認したものではありません。Excel等のバージョンや検証方法の詳細は実行確認の記録(JSON)で参照できます。

できあがるもの

完成表の列は 時間数/総時間/時部分、値は [[27,27,3]] です。27時間の総時間は27ですが、時部分だけでは3になります。 グループ化の結果は行順が変わる場合があるためキーと値の組み合わせで照合します。日付・日時・durationは表示形式が異なっても同じ値か型も確認してください。

始める前に

  • Windows版Excel for Microsoft 365に含まれるPower Queryエディターを対象とします。Excelの画面名・メニューは更新状態で異なる場合があります。Power BIやMac版の画面操作は本記事では確認していません。
  • 新しい検証ブックで空のクエリを一つ作成します。コード中の架空表だけを使う自己完結例であり、実ファイル・Web・データベースへの接続権限や認証情報は必要ありません。
入力例

入力表は 時間数 の1列、1行です。値は [[27]] です。表は以下のMコードのSourceに埋め込まれているので、シート上の表を別に作る必要はありません。

入力例を表で確認する
入力例
時間数
27

掲載手順と同じ小さな入力例です。まずは、この値で試してください。

手順

  1. [データ]から[データの取得]→[その他のデータソースから]→[空のクエリ]を開きます。エディターの[詳細エディター]を開く前に、既存の業務クエリではなく新しい検証用クエリを選んでいることを確認します。Duration.Hoursは総時間ではなく日を除いた時部分です。長時間の集計ではTotalHoursを使います。
  2. 詳細エディターの内容を次の完全なMコードへ置き換えます。Sourceが架空の入力表、Resultが変換結果です。日本語の列名や大文字小文字、引用符を変えずに貼り付けて[完了]を押します。
    let
        Source = #table(type table [#"時間数" = number], {
            {27}
        }),
        Result = let Add=Table.AddColumn(Source,"経過",each #duration(0,0,0,[時間数]*3600),type duration), Total=Table.AddColumn(Add,"総時間",each Duration.TotalHours([経過]),type number), Part=Table.AddColumn(Total,"時部分",each Duration.Hours([経過]),Int64.Type) in Table.RemoveColumns(Part,{"経過"})
    in
        Result
  3. 適用したステップのSourceをクリックして入力1行を確認し、Resultへ戻して完成表と比べます。27時間の総時間は27ですが、時部分だけでは3になります。 出力列は 時間数/総時間/時部分、期待行数は1件です。nullと空文字、0を別の値として確認してください。
  4. [閉じて読み込む]の読み込み先を新しいシートにして、元の入力を持つシートへ上書きしないようにします。読み込み後に[すべて更新]を一回行い、件数と値が変わらないことを確認します。Duration.Hoursは総時間ではなく日を除いた時部分です。長時間の集計ではTotalHoursを使います。 本記事のアプリでの実行結果は未確認のため、完成表の照合を省略しないでください。
    できあがる結果を表で確認する
    できあがる結果
    時間数総時間時部分
    27273

    27時間の総時間は27ですが、時部分だけでは3になります。

期待結果と照合する

完成表の列は 時間数/総時間/時部分、値は [[27,27,3]] です。27時間の総時間は27ですが、時部分だけでは3になります。 グループ化の結果は行順が変わる場合があるためキーと値の組み合わせで照合します。日付・日時・durationは表示形式が異なっても同じ値か型も確認してください。

まずこの入力例で確認し、件数や値が一致しているかを見ます。完了表示だけで判断せず、重複・空欄・対象外データも残っていないか確認してください。

うまくいかないとき

  • Duration.Hoursは総時間ではなく日を除いた時部分です。長時間の集計ではTotalHoursを使います。
  • Expression.Errorが出た場合は、コードの列名と入力の列名、大文字小文字が一致するか調べます。入力の型を安易にanyへ変えてエラーを隠さないでください。例は小さな表向けであり、大量データに移すときは行数と更新時間も確認します。

止める・元に戻す

検証用に追加したクエリと新しい出力シートを削除するか、開始前の保存版を開き直します。元ファイル・外部サービスの更新や削除は行わないコードです。本番クエリへ採用する前に複製を作り、入力行数・出力行数・エラー件数を比較できる状態にしてください。

公式資料・対応範囲

参照日:2026-10-19。公式資料の一般的な機能説明と、本記事固有の入力例の実行検証は別です。実務での短縮時間や効果は未計測です。

同じツールで試す

Power Queryの記事一覧へ →