Power Queryで文字列を結合する方法を徹底解説|列の結合・カスタム列で使える便利なテクニック

ExcelのPower Query(パワークエリ)は、データを整理・変換する強力なツールですが、「文字列を結合したい」ときに少し戸惑う方も多いのではないでしょうか。
たとえば、「姓」と「名」をまとめて「氏名」にしたい、「住所」と「番地」をつなげたい、あるいは複数列の値をハイフンやスペースで結合したいなど、現場ではよくある作業です。

この記事では、Power Queryで文字列を結合する方法を初心者でもわかるように解説します。
結合方法の基本から、複数列の結合、カスタム列での結合、さらには区切り文字の使い方まで、実践的な例を交えて紹介します。


Power Queryとは?文字列結合の前に知っておきたい基本

Power Queryは、ExcelやPower BIに搭載されているデータ取得・変換ツールです。
CSVファイルやWebデータ、他のExcelファイルなど、さまざまなデータソースから情報を取り込み、整形や加工を自動化できます。

Power Queryの利点は、手動でExcel関数を使わずに、GUIやM言語(Power Query Formula Language)を使ってデータを処理できることです。
「列を結合する」や「列の値を変換する」といった作業を視覚的に行えるため、大量データでも効率的に処理できます。

文字列結合はPower Queryでよく使われる操作のひとつで、顧客データ、住所データ、商品名などをまとめる際にとても便利です。


列を結合して1つの列にまとめる基本操作

最も簡単な文字列の結合方法は、複数の列を1つにまとめる操作です。

手順:

  1. ExcelでPower Queryエディターを開く(「データ」→「クエリの編集」)。
  2. 結合したい列(たとえば「姓」と「名」)をCtrlキーを押しながら選択。
  3. 右クリックして「列の結合」を選択。
  4. 区切り文字を指定(例:「スペース」「カンマ」「ハイフン」など)。
  5. 新しい列名(例:「氏名」)を設定してOKをクリック。

これで、「田中」「太郎」というデータが「田中 太郎」と結合された1列になります。

区切り文字を指定しない場合はそのまま結合され、「田中太郎」として表示されます。


カスタム列で文字列を結合する(M言語を使う方法)

Power Queryでは、M言語を使ってカスタム列を作成することで、より柔軟な結合ができます。

例:姓と名を結合して「氏名」列を作る

  1. 「列の追加」タブ → 「カスタム列」をクリック。
  2. 数式欄に次のように入力します:
= [姓] & " " & [名]
  1. 新しい列名に「氏名」と入力してOKをクリック。

この式では、& が文字列結合の演算子で、 " " はスペースを意味します。
つまり、「姓」列と「名」列の間に半角スペースを入れて結合するという意味です。

区切りを変更したい場合

= [姓] & "・" & [名]

のようにすれば、「田中・太郎」と表示されます。
また、ハイフン "-" やカンマ "," など、自由に指定できます。


数値や日付を文字列として結合する

結合したい対象が文字列でなく、数値や日付の場合は、Text.From()関数を使う必要があります。

例:日付列と名前列を結合する

= Text.From([日付]) & ":" & [名前]

このようにすることで、2025/11/03:山田花子 のように出力されます。

もし日付のフォーマットを変えたい場合は、次のように指定します。

= Date.ToText([日付], "yyyy年MM月dd日") & ":" & [名前]

結果は 2025年11月03日:山田花子 になります。

このように、異なるデータ型を結合する場合は、文字列型に変換してから結合するのがポイントです。


複数列をまとめて結合する方法(Table.CombineColumns)

複数の列を一括で結合したい場合は、Table.CombineColumns 関数を使う方法もあります。

例:姓・名・部署名をまとめて結合する

  1. Power Queryエディターで「詳細エディター」を開く。
  2. 以下のコードを参考に追加します。
= Table.CombineColumns(
    #"前のステップ",
    {"姓", "名", "部署"},
    Combiner.CombineTextByDelimiter(" "),
    "結合列"
)

これにより、「田中 太郎 営業部」のように3つの列がスペース区切りで結合され、「結合列」という新しい列として出力されます。

ポイント

  • " " の部分を変更すれば、カンマ区切り " , ", 改行 "#(lf)" なども可能です。
  • "前のステップ" は実際のクエリ名に置き換えて使用します。

条件付きで文字列を結合する

結合したい列の中に空白やnullがあると、意図しない出力になることがあります。
そんなときは、条件分岐を使って制御するのが便利です。

例:部署名があるときだけ括弧付きで結合する

= [氏名] & if [部署] <> null then "(" & [部署] & ")" else ""

この式では、部署が存在する場合のみ「(部署名)」を追加します。
たとえば「田中太郎(営業部)」のように出力されます。


区切り文字を動的に変えるテクニック

結合する際に、場合によって区切り文字を変えたいこともあります。
たとえば「部署」が空欄ならカンマを省略したい場合などです。

例:空欄を除いて結合

= Text.Combine(List.Select({[姓], [名], [部署]}, each _ <> null), " ")

このコードでは、null(空欄)を除いたリストをスペースで結合しています。
Power Queryでは、List.Select()Text.Combine() を組み合わせることで、柔軟な結合が可能です。


文字列を結合して1列にした後の注意点

Power Queryで結合した列は、最終的にExcelシートへ「読み込み」することで反映されます。
ただし、以下の点に注意しましょう。

  • 元データを更新すると、自動で再計算される(手動で「更新」可能)。
  • 結合後に列名を変えると、次回更新時にエラーになる場合がある。
  • 文字列の長さが極端に長い場合、Excelセルの表示幅に注意。

特に、Power Query内で列を削除したり、順序を変更した場合、参照先が変わってエラー(Expression.Error)が出ることがあります。
その場合は、式の列名を修正して再試行しましょう。


実践例:住所データの整形

ここでは、住所データを例に実践してみましょう。

都道府県市区町村丁目番地
東京都千代田区一番町1-1
大阪府北区梅田3-1-1

これを1つの列「住所」にまとめるには次のようにします。

= [都道府県] & [市区町村] & [丁目番地]

または、区切り文字を入れたい場合:

= [都道府県] & " " & [市区町村] & " " & [丁目番地]

結果:

  • 東京都 千代田区 一番町1-1
  • 大阪府 北区 梅田3-1-1

このように、Power Queryの結合操作を使えば、表の見た目を整える作業を自動化できます。


まとめ

Power Queryで文字列を結合する方法は、目的に応じていくつかあります。

  • 複数列をGUI操作で「列の結合」する
  • M言語で & を使ってカスタム列を作成する
  • Text.Combine()Table.CombineColumns() で複雑な処理を行う
  • null値や空欄を避けたい場合は List.Select() を使う

特に、M言語を少し使いこなせるようになると、柔軟で効率的なデータ整形が可能になります。
Excel関数で手作業していた結合処理も、Power Queryを活用すれば自動で再現できるので、業務効率化に大きく貢献します。

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