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つにまとめる操作です。
手順:
- ExcelでPower Queryエディターを開く(「データ」→「クエリの編集」)。
- 結合したい列(たとえば「姓」と「名」)をCtrlキーを押しながら選択。
- 右クリックして「列の結合」を選択。
- 区切り文字を指定(例:「スペース」「カンマ」「ハイフン」など)。
- 新しい列名(例:「氏名」)を設定してOKをクリック。
これで、「田中」「太郎」というデータが「田中 太郎」と結合された1列になります。
区切り文字を指定しない場合はそのまま結合され、「田中太郎」として表示されます。
カスタム列で文字列を結合する(M言語を使う方法)
Power Queryでは、M言語を使ってカスタム列を作成することで、より柔軟な結合ができます。
例:姓と名を結合して「氏名」列を作る
- 「列の追加」タブ → 「カスタム列」をクリック。
- 数式欄に次のように入力します:
= [姓] & " " & [名]
- 新しい列名に「氏名」と入力してOKをクリック。
この式では、& が文字列結合の演算子で、 " " はスペースを意味します。
つまり、「姓」列と「名」列の間に半角スペースを入れて結合するという意味です。
区切りを変更したい場合
= [姓] & "・" & [名]
のようにすれば、「田中・太郎」と表示されます。
また、ハイフン "-" やカンマ "," など、自由に指定できます。
数値や日付を文字列として結合する
結合したい対象が文字列でなく、数値や日付の場合は、Text.From()関数を使う必要があります。
例:日付列と名前列を結合する
= Text.From([日付]) & ":" & [名前]
このようにすることで、2025/11/03:山田花子 のように出力されます。
もし日付のフォーマットを変えたい場合は、次のように指定します。
= Date.ToText([日付], "yyyy年MM月dd日") & ":" & [名前]
結果は 2025年11月03日:山田花子 になります。
このように、異なるデータ型を結合する場合は、文字列型に変換してから結合するのがポイントです。
複数列をまとめて結合する方法(Table.CombineColumns)
複数の列を一括で結合したい場合は、Table.CombineColumns 関数を使う方法もあります。
例:姓・名・部署名をまとめて結合する
- Power Queryエディターで「詳細エディター」を開く。
- 以下のコードを参考に追加します。
= 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を活用すれば自動で再現できるので、業務効率化に大きく貢献します。
