数値と日付を扱う ― 丸め・統計・日付抽出・期間計算

このページのゴール

Power Queryの「変換」タブと「列の追加」タブにある数値操作(四則演算・丸め・統計)と日付操作(年月日の抽出・期間計算・月末の取得)をGUIで使いこなせるようになることです。Excelの ROUND、YEAR、MONTH、DATEDIF、EOMONTH に対応する操作を中心に解説します。

四則演算 ― 標準ボタンで計算する

数値列を選択した状態で「変換」タブを見ると、「標準」というドロップダウンがあります。ここに基本的な四則演算が並んでいます。

メニュー動作使い方
追加各値に固定値を足す「追加」→ 数値を入力(例:1000)→ 全行に+1000
乗算各値に固定値を掛ける「乗算」→ 数値を入力(例:1.1)→ 全行に×1.1(10%増)
減算各値から固定値を引く
除算各値を固定値で割る
整数の除算整数部分だけ返す割り算7 ÷ 3 = 2(余りは切り捨て)
剰余割り算の余り7 mod 3 = 1

操作手順(例:税込み価格を計算 ― 全行×1.1)

1. 数値列(例:「単価」)のヘッダーをクリックして選択します。
2. 変換 タブ → 標準 → 乗算 をクリックします。
3. 「値」に 1.1 を入力して「OK」。
4. 全行の値が1.1倍されます。

「標準」ボタンの演算は固定値との計算だけ
「標準」メニューは「すべての行に同じ値を足す/掛ける」操作です。「列A × 列B」のように列同士の計算はカスタム列を使います。
カスタム列での数式例:[単価] * [数量]
列同士の計算をGUIだけで行うもう一つの方法
2つの数値列を Ctrl+クリックで選択した状態で変換タブ → 標準 → 乗算を使うと、2列の値同士を掛け合わせた結果で列が置き換わります。ただしこの場合、元の列が書き換わるため、元データを残したい場合はカスタム列を使ってください。

丸め ― 四捨五入・切り上げ・切り捨て

ExcelのROUND / ROUNDUP / ROUNDDOWN に対応する操作です。

GUI操作Excel関数M言語動作
変換 → 丸め → 四捨五入ROUNDNumber.Round([列], 桁数)指定した小数桁数に四捨五入
変換 → 丸め → 切り上げROUNDUPNumber.RoundUp([列], 桁数)切り上げ
変換 → 丸め → 切り捨てROUNDDOWNNumber.RoundDown([列], 桁数)切り捨て

操作手順(例:小数第1位に四捨五入)

1. 数値列のヘッダーをクリックして選択します。
2. 変換 タブ → 丸め → 四捨五入 をクリックします。
3. 「小数点以下の桁数」に 1 を入力して「OK」。
4. 3.14159 → 3.1、2.678 → 2.7 のように丸められます。

Power Queryの四捨五入は「銀行丸め」
Power Queryの Number.Round は、0.5 ちょうどの場合に偶数方向に丸める「銀行丸め(Banker's Rounding)」を使用します。たとえば 2.5 は 2 に、3.5 は 4 に丸められます。Excelの ROUND関数(常に切り上げ)とは結果が異なる場合があります。Excelと同じ挙動にしたい場合は、カスタム列で Number.Round([列], 桁数, RoundingMode.AwayFromZero) と記述します。

統計 ― 列全体の集計値を得る

「変換」タブの「統計」メニューには、列全体を1つの集計値に変換する機能があります。

メニューExcel関数動作
統計 → 合計SUM列全体の合計
統計 → 最小値MIN列全体の最小値
統計 → 最大値MAX列全体の最大値
統計 → 平均AVERAGE列全体の平均
統計 → 中央値MEDIAN列全体の中央値
統計 → 値のカウントCOUNTnull以外の値の数
統計 → 個別の値のカウントなし(ピボットテーブルの「個別のカウント」に相当)ユニークな値の数
注意:統計を実行するとテーブルが1つの値に変わる
「統計」の操作を実行すると、テーブル全体がなくなり、1つの値だけが残ります。元のテーブルに「合計列を追加したい」という場合は、カスタム列で List.Sum([売上]) のようにList関数を使うか、グループ化機能を使います。「統計」は単体で集計値だけ欲しいときの機能です。

日付から年・月・日を取り出す

ExcelのYEAR / MONTH / DAY関数に対応する操作です。日付型の列を選択すると、「変換」タブと「列の追加」タブに「日付」メニューが表示されます。

GUI操作Excel関数M言語出力例(2026/03/21 の場合)
日付 → 年 → YEARDate.Year([日付列])2026
日付 → 月 → MONTHDate.Month([日付列])3
日付 → 日 → DAYDate.Day([日付列])21
日付 → 曜日 → 曜日の名前TEXT(A1,"dddd")Date.DayOfWeekName([日付列])土曜日
日付 → 週 → 年の通算週WEEKNUMDate.WeekOfYear([日付列])12
日付 → 四半期 → 年の四半期ROUNDUP(MONTH(A1)/3,0)Date.QuarterOfYear([日付列])1

操作手順(例:月を取り出す)

1. 日付列のヘッダーをクリックして選択します。
2. 変換 タブ → 日付 → 月 → 月 をクリックします。
3. 日付が月の数値(1〜12)に置き換わります

元の日付列を残したい場合は、列の追加 タブ → 日付 → 月 → 月 を使ってください。

「年月」列を作りたい場合
「2026年3月」のような年月文字列を作りたい場合は、「例からの列」で最初のセルに「2026年3月」と入力すると、Power Queryが自動推定してくれることが多いです。うまくいかない場合は、カスタム列で次のように記述します:
Number.ToText(Date.Year([日付列])) & "年" & Number.ToText(Date.Month([日付列])) & "月"

日付の計算 ― 期間・月末・加減算

2つの日付の差を計算する(DATEDIF相当)

ExcelのDATEDIF関数に相当する操作です。Power Queryでは日付同士の引き算の結果が「Duration(期間)」型になるため、そこから日数や年数を取り出します。

操作手順(日数を算出)

1. 列の追加 タブ → カスタム列 をクリックします。
2. 列名を「経過日数」とし、数式に次のように入力します:

Duration.Days([終了日] - [開始日])

3. 「OK」をクリックすると、2つの日付の差が日数で表示されます。

年数に変換したい場合は Duration.Days([終了日] - [開始日]) / 365 で概算できます。正確な年数が必要な場合は、年・月をそれぞれ抽出して計算する方法が確実です。

GUIだけで日数差を出す方法
2つの日付列があるとき、列の追加 タブ → 日付 → 期間の減算 → 日数 を使うとカスタム列を使わずにGUIだけで日数差の列を作れます(Excel 2021以降/Microsoft 365)。ただし、この操作がメニューに表示されるのは日付型の列を2つ選択しているときだけです。

月末の日付を取得する(EOMONTH相当)

操作手順

1. 日付列のヘッダーをクリックして選択します。
2. 変換 タブ → 日付 → 月 → 月末 をクリックします。
3. 各日付がその月の末日に置き換わります(例:2026/03/21 → 2026/03/31)。

ExcelのEOMONTH(A1, 1)のように「翌月末」を求めたい場合は、先に「月の加算」で1ヶ月足してから「月末」を適用する2ステップで実現します。

日付に月や年を加算する

GUI操作動作
変換 → 日付 → 年 → 年の加算指定した年数を加算2026/03/21 + 1年 → 2027/03/21
変換 → 日付 → 月 → 月の加算指定した月数を加算2026/03/21 + 2ヶ月 → 2026/05/21
変換 → 日付 → 日 → 日の加算指定した日数を加算2026/03/21 + 30日 → 2026/04/20

日付でよくあるトラブルと対処法

トラブル1:日付がテキスト型のまま認識されない

CSVから取り込んだ日付が「2026/03/21」というテキストのまま、日付型に変換できないことがあります。

対処法

1. 列のデータ型アイコン(ABC)をクリック。
2. 「ロケールを使用…」を選択。
3. データ型で「日付」、ロケールで「日本語(日本)」を選択して「OK」。
これで「年/月/日」形式のテキストを正しく日付型に変換できます。

トラブル2:月と日が入れ替わる

「03/04/2026」を取り込んだら、3月4日ではなく4月3日として認識されることがあります。これはPower Queryがアメリカ形式(MM/DD/YYYY)で解釈しているためです。

対処法

上記と同様に「ロケールを使用…」で「日本語(日本)」を指定してください。それでも解決しない場合は、テキスト型のまま列を分割して年・月・日を取り出し、カスタム列で #date([年], [月], [日]) のように日付を組み立てる方法が確実です。

トラブル3:日付/時刻型になっていて時刻部分が邪魔

日付だけほしいのに「2026/03/21 0:00:00」のように時刻が付いている場合は、データ型を「日付/時刻」から「日付」に変更するだけで時刻部分が取り除かれます。

Excel関数との対応まとめ

数値関数の対応

Excel関数Power Query GUIM言語注意
ROUND変換 → 丸め → 四捨五入Number.Round([列], n)銀行丸め(0.5は偶数方向)
ROUNDUP変換 → 丸め → 切り上げNumber.RoundUp([列], n)
ROUNDDOWN変換 → 丸め → 切り捨てNumber.RoundDown([列], n)
ABS変換 → 科学 → 絶対値Number.Abs([列])
SUM(列全体)変換 → 統計 → 合計List.Sum([列])テーブルが1値に変わる
A1*B1(列同士)カスタム列[列A] * [列B]GUIの標準ボタンは固定値のみ

日付関数の対応

Excel関数Power Query GUIM言語注意
YEAR日付 → 年 → 年Date.Year([列])
MONTH日付 → 月 → 月Date.Month([列])
DAY日付 → 日 → 日Date.Day([列])
EOMONTH日付 → 月 → 月末Date.EndOfMonth([列])翌月末は先に月を加算
DATEDIF(日数)カスタム列Duration.Days([終了]-[開始])
TODAYカスタム列DateTime.LocalNow()GUIボタンなし
DATEカスタム列#date(年, 月, 日)GUIボタンなし

実践例 ― 社員データから勤続年数と給与ランクを算出

サンプルデータ

社員名入社日基本給
田中2015/04/01350000
佐藤2020/10/15280000
鈴木2023/04/01250000

Step 1:勤続日数を算出(カスタム列)

列の追加 → カスタム列 → 列名「勤続日数」

Duration.Days(DateTime.LocalNow() - [入社日])

Step 2:勤続年数に変換(カスタム列)

列の追加 → カスタム列 → 列名「勤続年数」

Number.RoundDown([勤続日数] / 365, 0)

Step 3:入社年度を抽出(GUIで年を取り出す)

「入社日」列を選択 → 列の追加 → 日付 → 年 → 年

Step 4:給与を千円単位に丸め

「基本給」列を選択 → 変換 → 丸め → 切り捨て → 小数点以下の桁数「-3」(マイナスを指定すると千の位で丸められます)

After

社員名入社日基本給勤続日数勤続年数入社年
田中2015/04/013500004007102015
佐藤2020/10/15280000198352020
鈴木2023/04/01250000108522023

カスタム列を2回使いましたが、数式はどちらも1行だけです。M言語の深い知識がなくても、このレベルの計算は十分に実用できます。

まとめ

数値と日付の操作で覚えておくべきポイントは4つです。第一に、「標準」ボタンは固定値との演算で、列同士の計算にはカスタム列を使うこと。第二に、Power Queryの四捨五入は「銀行丸め」であり、Excel の ROUND とは 0.5 ちょうどの処理が異なること。第三に、日付操作は「変換」タブだと元の列が書き換わるため、元の日付を残したい場合は「列の追加」タブを使うこと。第四に、日付のロケール問題(月日の取り違え)は、「ロケールを使用…」で日本語を指定することで解決すること。

これで「パワークエリ GUIマスターシリーズ」全6回が完了です。ここまでの内容を身につければ、日常の Excel 作業の大部分をPower Queryで自動化できるはずです。さらに深い内容(グループ化、ピボット解除、マージ、パラメータクエリ、M言語)は、今後の記事で扱います。