PR

Power Queryで文字列を自在に操る!よく使う文字列操作のM関数

Power Query

この列のコードから途中の数字と記号の部分だけ取り出したいんですけど…
どうやればいいんですか?

そんなときは、文字列操作の関数を使えばOK!思った形に整えることができるよ。

「データに余計な空白が入ってる…」
「コードの一部だけ取り出したい!」
「全部大文字にしたいんだけど?」

こういう “ちょっとした文字の悩み” って、意外とよくありますよね。

でもご安心を!Power Query(パワークエリ)には、そんなお悩みをサクッと解決してくれる便利な文字列関数がたくさん用意されています。

この記事では、よく使う文字列操作のM関数をまとめてご紹介します。「Power Queryで文字列を思い通りに扱いたい!」という方の第一歩になるハズです。

スポンサーリンク

文字列の先頭・末尾を切り出す

Text.Start(text, count)文字列の先頭から指定した文字数を取得
Text.End(text, count)文字列の末尾から指定した文字数を取得
Text.Middle(text, start, count)文字列の途中(指定した位置)から指定した文字数を取得

Text.Start

文字列の先頭から指定した文字数だけ取り出します。
Excelの LEFT関数 と似ています。

  • 文字列:対象となるテキスト(例:”Power Query”)
  • 取得する文字数:先頭から何文字取得するかを指定する数値(例:5)
= Text.Start("Power Query", 5)

結果: “Power”

「Power Query」の先頭5文字を取得します。

  • 取得する文字数が元の文字列より大きい場合は、文字列全体が返されます。
  • 空白や記号も1文字としてカウントされます。
  • 日本語の全角文字も1文字として扱われます。

Text.End

文字列の末尾から指定した文字数を取得します。
Excelの RIGHT関数 と似ています。

  • 文字列:対象となるテキスト(例:”Power Query”)
  • 取得する文字数:末尾から何文字取得するかを指定する数値(例:5)
= Text.End("Power Query", 5)

結果: “Query”

「Power Query」の末尾5文字を取得します。

  • 取得する文字数が元の文字列より大きい場合は、文字列全体が返されます。
  • 空白や記号も1文字としてカウントされます。
  • 日本語の全角文字も1文字として扱われます。

Text.Middle

文字列の途中から、指定した位置と文字数で切り出します。
Excelの MID関数 と同じイメージです。

  • 文字列:対象となるテキスト(例:”Power Query”)
  • 開始位置:切り出しを始める位置(0から始まるインデックス)
  • 取得する文字数:何文字取得するかを指定する数値
= Text.Middle("Power Query", 6, 5)

結果: “Query”

「Power Query」の7文字目(インデックス6)から5文字分を取得しています。

  • インデックスは 0から始まる ため、1文字目は位置「0」となります。
  • 開始位置+取得文字数が元の文字列の長さを超えても、可能な範囲で文字が返されます。
  • 空白や記号、全角文字も1文字としてカウントされます。

文字列の中に含まれているか調べる

Text.Contains(text, substring)指定した文字列が含まれているかを判定
(True/False)
Text.PositionOf(text, substring)指定した文字列の位置(インデックス)を返す

Text.Contains

指定した文字が含まれているかどうかを判定します。結果は true / false
Excelでいう SEARCH 関数や FIND 関数の「見つかったかどうか」だけを判定するイメージです。

  • 文字列:調べたい元のテキスト(例:”Power Query”)
  • 検索する文字列:含まれているかどうかを調べる部分文字列(例:”Query”)
= Text.Contains("Power Query", "Query")

結果: true

「Power Query」の中に「Query」が含まれているため、true が返されます。

  • 大文字と小文字は区別されます(”query” は “Query” と一致しません)。
  • 大文字・小文字を区別しない場合は、Text.Lower 関数などと組み合わせて小文字化してから判定する方法もあります。
= Text.Contains(Text.Lower("Power Query"), Text.Lower("query"))  // 結果: true

Text.PositionOf

検索した文字列が「どの位置」にあるかを返します。
Excelでいう SEARCH 関数や FIND 関数に近い機能です。

  • 文字列:調べたい元のテキスト(例:”Power Query”)
  • 検索する文字列:探したい部分文字列(例:”Query”)
= Text.PositionOf("Power Query", "Query")

結果: 6

「Power Query」の中で「Query」が始まる位置は、7文字目(インデックス6)です。

  • 大文字と小文字は区別されます(”query” は “Query” と一致しません)。
  • 一致する文字列が見つからない場合は -1 が返されます。
  • 同じ文字列が複数ある場合は、最初に見つかった位置のみが返されます。
= Text.PositionOf("Power Query", "Excel")  // 結果: -1

文字列の置換

Text.Replace(text, old, new)指定した文字列を別の文字列に置き換える
Text.ReplaceRange(text, offset, count, newText)指定範囲の文字列を置き換える

Text.Replace

文字列の一部をまとめて別の文字に置き換えます。
Excelでいう SUBSTITUTE 関数に近い機能です。

  • 元の文字列:変更したい元のテキスト(例:”Power Query”)
  • 置き換え対象の文字列:探して置き換えたい部分文字列(例:”Query”)
  • 新しい文字列:置き換え後の文字列(例:”BI”)
= Text.Replace("Power Query", "Query", "BI")

結果: “Power BI”

「Power Query」の中の「Query」が「BI」に置き換えられています。

  • 出現するすべての値を置き換えます。
  • 大文字と小文字は区別されます(”query” は “Query” と一致しません)。
  • 置き換え対象が見つからない場合は、元の文字列がそのまま返されます。
= Text.Replace("Power Query", "Excel", "BI")  // 結果: "Power Query"

Text.ReplaceRange

「◯文字目から◯文字分だけ」を別の文字に置き換えます。
Excelでいうと REPLACE 関数に近い動きです。

  • 元の文字列:変更対象となるテキスト(例:”Power Query”)
  • 開始位置:置き換えを始める位置(0から始まるインデックス)
  • 置き換える文字数:何文字分を置き換えるか
  • 新しい文字列:置き換え後の文字列(例:”BI”)
= Text.ReplaceRange("Power Query", 6, 5, "BI")

結果: “Power BI”

「Power Query」の7文字目(インデックス6)から5文字分(”Query”)を「BI」に置き換えています。

  • インデックスは 0から始まる ので、1文字目は位置「0」になります。
  • 開始位置+置き換え文字数が元の文字列の長さを超えても、エラーにはなりませんが、結果は短くなることがあります。
  • 空白や記号、全角文字も1文字としてカウントされます。

余分な空白や制御文字を除去

Text.Trim(text)前後の空白を削除
Text.Clean(text)制御文字(改行コードなど)を削除

Text.Trim

文字列の前後の空白を削除します。 文字列の中間にある空白はそのまま残ります。
Excelでいう TRIM 関数と似ています。

改行やタブなどの制御文字は削除されません(Text.Clean 関数を使います)。

  • 文字列:前後の空白を取り除きたいテキスト(例:” Power Query “)
= Text.Trim(" Power Query ")

結果: “Power Query”

前後の空白が削除され、すっきりした文字列になります。

  • データ入力時の余計なスペースを取り除くことで、検索や結合の精度が向上します。
  • 空白だけでなく、タブや改行コードなども削除したい場合は Text.Clean 関数と併用するのがおすすめです。
= Text.Trim(Text.Clean("  Power#(lf)Query  ")) // 結果: "PowerQuery"

Text.Clean

改行コードやタブなどの “見えないゴミ” を削除します。
Excelの CLEAN 関数と似た機能です。

  • 文字列:不要な制御文字や改行コードなどを取り除きたいテキスト(例:”Power#(lf)Query”)
= Text.Clean("Power#(lf)Query")

結果: “PowerQuery”

改行コード #(lf) が削除され、すっきりした文字列になります。

  • 空白(スペース)は削除されません。空白も除去したい場合は Text.Trim 関数と組み合わせるのがおすすめです。
  • データのインポート時やコピー&ペーストで混入した不要な文字を取り除くのに最適です。

文字の大文字・小文字変換

Text.Upper(text)全て大文字に
Text.Lower(text)全て小文字に
Text.Proper(text)単語の先頭だけ大文字に

Text.Upper

すべての英字を 大文字(アルファベットの大文字) に変換します。
Excelの UPPER 関数と同じような働きをします。

  • 文字列:すべて大文字に変換したいテキスト(例:”power query”)
= Text.Upper("power query")

結果: “POWER QUERY”

小文字だった文字列がすべて大文字に変換されています。

  • 英字以外(数字や記号、日本語など)はそのまま変換されずに残ります。
  • データの表記を統一したいときや、大文字で強調したいときに便利です。

Text.Lower

すべての英字を 小文字(アルファベットの小文字) に変換します。
Excelの LOWER 関数と同じような働きをします。

  • 文字列:すべて小文字に変換したいテキスト(例:”Power QUERY”)
= Text.Lower("Power QUERY")

結果: “power query”

大文字だった文字列がすべて小文字に変換されています。

  • 英字以外(数字、記号、日本語など)はそのまま変換されずに残ります。
  • 大文字・小文字を区別せずに検索や比較をしたいときに便利です。
= Text.Contains(Text.Lower("Excel Pro"), "excel")  // 例: "Excel Pro" → true

Text.Proper

文字列の中にある 各単語の先頭文字を大文字に、それ以外を小文字に変換します。
Excelの PROPER 関数と同じような働きをします。

  • 文字列:各単語の先頭を大文字に変換したいテキスト(例:”power query for excel”)
= Text.Proper("power query for excel")

結果: “Power Query For Excel”

各単語の先頭が大文字になり、見た目が整ったタイトル風の表記になります。

  • 単語の区切りは、スペースや記号(例:ハイフン、アンダースコア)で判断されます。
  • 英字以外(数字、日本語など)は変換されません。
  • タイトルや見出しの整形、表記の統一に便利です。

文字列の結合と分割

Text.Combine(list, separator)リストの文字列を結合
Text.Split(text, separator)文字列を区切り文字で分割してリストに

Text.Combine

リストの文字列をひとつにまとめます。
Excelでいう TEXTJOIN 関数に近い働きをします。

  • 文字列のリスト:結合したい複数の文字列をリスト形式で指定(例:{“Power”, “Query”})
  • 区切り文字:各文字列の間に挿入する文字(例:” ” や “-“)
= Text.Combine({"Power", "Query"}, " ")

結果: “Power Query”

リスト内の2つの文字列が、スペースで結合されています。

  • この関数は、日付やコードの整形、複数列の統合など、実務でもよく使われます。
  • 区切り文字は空文字(””)にすれば、間に何も挟まずに結合できます。
  • 空のリストを渡すと、結果は空文字列になります。
= Text.Combine({"2025", "09", "15"}, "-")  // 結果: "2025-09-15"(ハイフンで結合)

Text.Split

文字列を 区切り文字で分割 し、リスト形式で返します。
Excelでいう TEXTSPLIT 関数や SPLIT 関数(Google スプレッドシート)に近い動きです。

  • 文字列:分割したい元のテキスト(例:”Power-Query-Excel”)
  • 区切り文字:どこで分割するかを指定する文字(例:”-“)
= Text.Split("Power-Query-Excel", "-")

結果: {“Power”,”Query”,”Excel”}

ハイフン - を区切りとして、3つの単語に分割されています。

  • 区切り文字が複数回出現する場合は、そのたびに分割されます。
  • 区切り文字が見つからない場合は、元の文字列がそのまま1つの要素として返されます。
  • 結果は リスト型 になるため、List.First 関数や List.Last 関数などの関数と組み合わせて使うことができます。
= List.First(Text.Split("ABC_123_XYZ", "_"))  // 結果: "ABC"

実際に使ってみよう

Text.Start 関数を使って、列から一部の値を取り出します。

1.「列の追加」→「カスタム列」をクリック

2.カスタム列ウィンドウに式を入力

入力補助機能を使うことでスペルミスなどを防げます。

3.抽出結果を確認

Power Queryでは、文字列の切り出しや変換などの操作をメニュー(リボンタブ)から簡単に行うこともできます関数を使う方法とメニュー操作では、それぞれ得意なことが違うので、うまく使い分けるのがポイントです。

操作方法特徴おすすめ場面
メニューから直感的で分かりやすい単純な抽出や、確認しながら進めたいとき
関数柔軟で応用力が高い複雑な条件や、他の関数と組み合わせたいとき

その他の文字列操作関数

文字列操作関数についてもっと詳しく知りたいよっという方は、Microsoft Learn(日本語版)をご覧ください。

まとめ

Power Queryでのデータ整形に、文字列操作は欠かせない基本スキルです。

  • 切り出し
  • 変換
  • クリーニング
  • 検索・置換・結合・分割

これらをマスターすれば、データ処理の効率がグッと上がります。

最初はメニューからのダイアログで操作して、慣れてきたら関数で応用する。そんなステップアップを意識しながら、ぜひ日々の業務に取り入れてみてください。

ふぅ~、頭からちょっと煙が出そうでした…!でもコツがわかれば便利そう!
私も ”できる人” を目指してこっそり練習しちゃいます!

タイトルとURLをコピーしました