
先輩、大変です…!今朝、取引先から「商品コードが新しくなったので、データ全部を更新してください」って言われてて…!手で直すのつらすぎます…

落ち着いて。Power Queryの「値の置換」を使えば一括で置き換えられるよ。しかも、一回設定すれば次からも自動で変えられるから大丈夫。
Power Query(パワークエリ)でデータを整理するときに、よく登場するのが「値の置換」機能です。
たとえば――
- 商品の単価が変更されたから、古い金額を新しい金額に置き換えたい
- 組織改編で「第一営業部」が「営業本部」に名称変更されたので、全部まとめて修正したい
- 「A」「B」「C」の細かい分類を「カテゴリ1」「カテゴリ2」に再分類したい
こんな場面は日々の業務でもけっこう多くないでしょうか?
もちろん、Excel上で一つひとつ手作業で置換してもできますが、量が多いとミスも出やすいし、何より面倒で時間がかかります。
そんなときこそ、Power Queryの「値の置換」機能が大活躍!
基本の使い方はとってもシンプル。でも、少しステップアップすると条件付きの置換や複数条件の置換など、柔軟な処理もできるんです。
Power Queryの「値の置換」を基本から応用までしっかり解説していきます!
まずはここから!「値の置換」の基本の使い方
Power Queryを使うなら、この機能は絶対覚えておきたい!
そんな基本中の基本が――「値の置換」です。
「値の置換」は、とてもシンプルで使いやすい、そして本当に出番が多い機能です。
操作方法は以下の通りです。
- 置換したい列を選択
置換したい値が含まれている列をクリックします。 - 右クリック →「値の置換」を選択
列の上で右クリックし、表示されたメニューから「値の置換」を選びます。

メニューの「変換」→「値の置換」を選んでもOK。

- 置換前と置換後の値を入力
「検索する値」と「置換後の値」を入力して、「OK」をクリックする!

値が一括で変更されました。

ちょっと注意!部分一致で置換される
次は、「商品」列の「もも」ってひらがなを漢字の「桃」に置き換えてみましょう!

結果はどうでしょう。
「すもも」まで置換されて「す桃」になってしまいました!

これは、「もも」って文字が含まれていれば置換っていう“部分一致”で探しに行っちゃうからなんです。
そんなときは「値の置換」の「詳細設定オプション」を使います。
「詳細設定オプション」を開くと、「セルの内容の照合」っていう項目が出てくるので、そこにチェックを入れます。

これで、「もも」だけをちゃんと「桃」に置き換えられます。

応用編!条件付き・複数条件の置換は「詳細エディター」を使おう
「値の置換」で文字の置換はサクッと直せるようになったけど、もっと細かく「この条件のときだけ置き換えたい!」ってこと、ありませんか?
たとえば…
- 日付が2024年以前なら「旧」、それ以降なら「新」と分けたい
- 「部門」が「営業」かつ「ステータス」が「未対応」のときだけフラグを立てたい
- 特定の期間だけ単価を1割引きに計算して置換したい
こういった条件付きの置換は、残念ながら「値の置換」機能だけでは対応できません。
そんなときに登場するのが、Power Queryの「詳細エディター」です!
メニューの「ホーム」→「詳細エディター」で開きます。

詳細エディターは、Power Queryの“中身”をじかにいじれる編集画面です。
「詳細エディター」や条件の書き方はこちらの記事も参考にしてください。


置換する部分はこのような記述になっています。
Table.ReplaceValue(
対象のデータ(テーブル),
検索する値,
置き換える値,
Replacer.種類,
対象列リスト
)
「株式会社モフ」を「株式会社モフホールディング」に置換した部分を見てみましょう。
置き換えられた値1 = Table.ReplaceValue(
並べ替えられた行,
"株式会社モフ",
"株式会社モフホールディング",
Replacer.ReplaceText,
{"取引先"}
),
使ってるのは Table.ReplaceValue
っていう関数で、ポイントはこのあたり
その下の行では、「商品」列にある「もも」っていう文字を「桃」に置き換えています。
置き換えられた値2 = Table.ReplaceValue(
置き換えられた値1,
"もも",
"桃",
Replacer.ReplaceValue,
{"商品"}
)
ポイントはここ
さっきの Replacer.ReplaceText
は「部分一致(含まれてたらOK)」だったけど、今回の Replacer.ReplaceValue
は「完全一致じゃないと置換しない」のがポイント!
さて、次に条件で置換したいときは if
文を使います。
if [列名] = 条件 then 値1 else 値2
例えば
if [商品] = "もも" then "桃" else [商品]
これは「商品」列が「もも」だったら「桃」に置き換える、そうじゃなかったら元の値のままって意味になります。
さて、それでは実際に置換してみます。
置き換えられた値3 = Table.ReplaceValue(
置き換えられた値2,
each [取引先],
each if [取引先] = "株式会社モフホールディング" then "株式会社モフHD" else [取引先],
Replacer.ReplaceValue,
{"取引先"}
)
「取引先」列を見て、「株式会社モフホールディング」って書いてあるセルだけ 「株式会社モフHD」に置き換える!それ以外はそのまま!という意味になります。
ちゃんと置換されました。

書き方のちょっとしたポイントを押さえておきましょう。
置き換えられた値3 = Table.ReplaceValue(
置き換えられた値2,
each [取引先],
each if [取引先] = "株式会社モフホールディング" then "株式会社モフHD" else [取引先],
Replacer.ReplaceValue,
{"取引先"}
)
この「each」は「今見てる行(または値)を参照するよ!」っていう合図です。
each [取引先]と書けば「今見てる行の中の『取引先』列の値を取ってきてね〜」という意味になります。
列の値を参照するときは列名を[](角括弧)で囲みます。
if 文は条件を2つ以上組み合わせたり(andやorを使う)、入れ子(ネスト)も使えます。
また、置換する値には計算結果や関数(M関数)も使えます。
- each [金額] * 1.1
消費税10%を加算するみたいな処理。今見てる金額に対して掛け算する! - each Text.Upper([商品名])
商品名を全部大文字に変換する。
なお、複数条件の場合に次のような書き方もできますが、
置き換えられた値3 = Table.ReplaceValue(
置き換えられた値2,
"ルナ",
each if [日付] >= #date(2024, 2, 1) then "ルナ社" else [取引先],
Replacer.ReplaceText,
{"取引先"}
)
{“取引先”}に”ルナ”が含まれている場合で[日付]が2024/2/1以降の場合に、その値の部分を”ルナ社”に置き換えて、それ以外はそのままの値にするよっという意味になりますが、ちょっと分かりにくいですよね。
置き換えられた値3 = Table.ReplaceValue(
置き換えられた値2,
each [取引先],
each if [取引先] = "合同会社ルナ" and [日付] >= #date(2024, 2, 1) then "合同会社ルナ社" else [取引先],
Replacer.ReplaceValue,
{"取引先"}
)
{“取引先”}の値をすべてチェックして、[取引先]が”合同会社ルナ”かつ[日付]が2024/2/1以降の場合に、その値を”合同会社ルナ社”に置き換えて、それ以外はそのままの値にするよっという意味になります。
結果は同じですが、こっちの方が分かりやすいんじゃないでしょうか。
条件で部分一致を使いたいときは、Text.Contains([取引先], "ルナ")
って書き方もあるので、参考にしてみてくださいね!
if Text.Contains([取引先], "ルナ") and [日付] >= #date(2024, 2, 1) then "合同会社ルナ社" else [取引先]
[取引先]に”ルナ”が含まれていて[日付]が2024/2/1以降の場合に、その値を”合同会社ルナ社”に置き換えて、それ以外はそのままの値にするよっとなります。
まとめ
今回は「値の置換」について、基本的な使い方から詳細エディターを使った応用まで解説しました。
複数の条件を組み合わせたり、他の列の値を使って置換したりすることで、複雑なデータの処理も可能になります。
これにより、データ整理がより柔軟に、効率的にできるようになります。
基本から応用までの知識を身につけることで、今まで手作業で時間がかかっていた作業を、もっとスムーズにこなせるようになるので、ぜひ活用してみてくださいね!

これならデータ整理がどんどん楽になりそう!いろんな条件に対応できるなんて、めっちゃ便利で、ますます楽しくなってきました!