数値と日付を扱う ― 丸め・統計・日付抽出・期間計算
このページのゴール
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」のように列同士の計算はカスタム列を使います。
カスタム列での数式例:
[単価] * [数量]
2つの数値列を Ctrl+クリックで選択した状態で変換タブ → 標準 → 乗算を使うと、2列の値同士を掛け合わせた結果で列が置き換わります。ただしこの場合、元の列が書き換わるため、元データを残したい場合はカスタム列を使ってください。
丸め ― 四捨五入・切り上げ・切り捨て
ExcelのROUND / ROUNDUP / ROUNDDOWN に対応する操作です。
| GUI操作 | Excel関数 | M言語 | 動作 |
|---|---|---|---|
| 変換 → 丸め → 四捨五入 | ROUND | Number.Round([列], 桁数) | 指定した小数桁数に四捨五入 |
| 変換 → 丸め → 切り上げ | ROUNDUP | Number.RoundUp([列], 桁数) | 切り上げ |
| 変換 → 丸め → 切り捨て | ROUNDDOWN | Number.RoundDown([列], 桁数) | 切り捨て |
操作手順(例:小数第1位に四捨五入)
1. 数値列のヘッダーをクリックして選択します。
2. 変換 タブ → 丸め → 四捨五入 をクリックします。
3. 「小数点以下の桁数」に 1 を入力して「OK」。
4. 3.14159 → 3.1、2.678 → 2.7 のように丸められます。
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 | 列全体の中央値 |
| 統計 → 値のカウント | COUNT | null以外の値の数 |
| 統計 → 個別の値のカウント | なし(ピボットテーブルの「個別のカウント」に相当) | ユニークな値の数 |
「統計」の操作を実行すると、テーブル全体がなくなり、1つの値だけが残ります。元のテーブルに「合計列を追加したい」という場合は、カスタム列で
List.Sum([売上]) のようにList関数を使うか、グループ化機能を使います。「統計」は単体で集計値だけ欲しいときの機能です。
日付から年・月・日を取り出す
ExcelのYEAR / MONTH / DAY関数に対応する操作です。日付型の列を選択すると、「変換」タブと「列の追加」タブに「日付」メニューが表示されます。
| GUI操作 | Excel関数 | M言語 | 出力例(2026/03/21 の場合) |
|---|---|---|---|
| 日付 → 年 → 年 | YEAR | Date.Year([日付列]) | 2026 |
| 日付 → 月 → 月 | MONTH | Date.Month([日付列]) | 3 |
| 日付 → 日 → 日 | DAY | Date.Day([日付列]) | 21 |
| 日付 → 曜日 → 曜日の名前 | TEXT(A1,"dddd") | Date.DayOfWeekName([日付列]) | 土曜日 |
| 日付 → 週 → 年の通算週 | WEEKNUM | Date.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. 列名を「経過日数」とし、数式に次のように入力します:
3. 「OK」をクリックすると、2つの日付の差が日数で表示されます。
年数に変換したい場合は Duration.Days([終了日] - [開始日]) / 365 で概算できます。正確な年数が必要な場合は、年・月をそれぞれ抽出して計算する方法が確実です。
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 GUI | M言語 | 注意 |
|---|---|---|---|
| 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 GUI | M言語 | 注意 |
|---|---|---|---|
| YEAR | 日付 → 年 → 年 | Date.Year([列]) | ― |
| MONTH | 日付 → 月 → 月 | Date.Month([列]) | ― |
| DAY | 日付 → 日 → 日 | Date.Day([列]) | ― |
| EOMONTH | 日付 → 月 → 月末 | Date.EndOfMonth([列]) | 翌月末は先に月を加算 |
| DATEDIF(日数) | カスタム列 | Duration.Days([終了]-[開始]) | ― |
| TODAY | カスタム列 | DateTime.LocalNow() | GUIボタンなし |
| DATE | カスタム列 | #date(年, 月, 日) | GUIボタンなし |
実践例 ― 社員データから勤続年数と給与ランクを算出
サンプルデータ
| 社員名 | 入社日 | 基本給 |
|---|---|---|
| 田中 | 2015/04/01 | 350000 |
| 佐藤 | 2020/10/15 | 280000 |
| 鈴木 | 2023/04/01 | 250000 |
Step 1:勤続日数を算出(カスタム列)
列の追加 → カスタム列 → 列名「勤続日数」
Step 2:勤続年数に変換(カスタム列)
列の追加 → カスタム列 → 列名「勤続年数」
Step 3:入社年度を抽出(GUIで年を取り出す)
「入社日」列を選択 → 列の追加 → 日付 → 年 → 年
Step 4:給与を千円単位に丸め
「基本給」列を選択 → 変換 → 丸め → 切り捨て → 小数点以下の桁数「-3」(マイナスを指定すると千の位で丸められます)
After
| 社員名 | 入社日 | 基本給 | 勤続日数 | 勤続年数 | 入社年 |
|---|---|---|---|---|---|
| 田中 | 2015/04/01 | 350000 | 4007 | 10 | 2015 |
| 佐藤 | 2020/10/15 | 280000 | 1983 | 5 | 2020 |
| 鈴木 | 2023/04/01 | 250000 | 1085 | 2 | 2023 |
カスタム列を2回使いましたが、数式はどちらも1行だけです。M言語の深い知識がなくても、このレベルの計算は十分に実用できます。
まとめ
数値と日付の操作で覚えておくべきポイントは4つです。第一に、「標準」ボタンは固定値との演算で、列同士の計算にはカスタム列を使うこと。第二に、Power Queryの四捨五入は「銀行丸め」であり、Excel の ROUND とは 0.5 ちょうどの処理が異なること。第三に、日付操作は「変換」タブだと元の列が書き換わるため、元の日付を残したい場合は「列の追加」タブを使うこと。第四に、日付のロケール問題(月日の取り違え)は、「ロケールを使用…」で日本語を指定することで解決すること。
これで「パワークエリ GUIマスターシリーズ」全6回が完了です。ここまでの内容を身につければ、日常の Excel 作業の大部分をPower Queryで自動化できるはずです。さらに深い内容(グループ化、ピボット解除、マージ、パラメータクエリ、M言語)は、今後の記事で扱います。