テキストデータの取り込み時には、さまざまな形式で表現されることがあります。例として、「おはよう」「おは」「(スペース)おはよう」「Hello」はすべて同じ意味を持ちます。テキストクレンジングとは、このような異なる形式の文字列を「おはよう」のように統一し、数値のように扱いやすいデータに変換するプロセスを指します。本記事では、テキストクレンジングを徹底的に学びます。
テキスト型の基本
説明で利用するエクセルファイルをダウンロードして実際に操作をしてみましょう。
テキストクレンジングの学習に入る前に、テキスト型についての基本を押さえておきましょう。
エクセルを開き、[1:データ]タブから[2:テーブルまたは範囲から]を選択してパワークエリエディターを開きます。

テキスト型データの入力
[1:列の追加]タブから[2:カスタム列]を選択します。

テキストデータはダブルクォーテーション(”)で囲みます。

新規でカスタム列が追加され、パワクエとテキストデータが入力されました。

テキスト型データの結合
続いては、テキスト型データの結合を確認してみましょう。
[1:列の追加]タブから[2:カスタム列]を選択します。

結合したいテキスト間に「&」を入れることでテキスト型データが結合されます。
以下の例では、カスタム列の式に”パワクエ” & “最高” と入力しています。

全ての列に「パワクエ最高」と追加されました。

続いて、既存の列に任意のテキスト型データを結合する方法です。
上記の説明と同様にカスタム列を新規で追加して、以下のように入力します。既存列は列名を[]で囲います。
[列1] & “パワクエ”

以下のように、既存の列1に”パワクエ”といテキスト型データが結合されました。

テキストの置換
続いてテキスト関数を用いてテキストの置換を行います。
以下の列1内のテキスト型データ「行目」を「ROW」へ置換します。

Text.Replaceという関数を用います。
使い方は、Text.Replace(対象の列,置換するテキスト,置換後のテキスト)と引数を入力します。
具体的な使い方としては、Text.Replace([列1],”行目”,”ROW”)と入力します。

1行目を見て見ましょう。2行目セルの「行目」が「ROW」で置換されています。

#sharedを使って、テキスト関数を検索して検証する
テキスト関数は無数にあります。簡単に検索できて関数の動きを検証する方法があるので説明します。
- データタブの[クエリと接続]を選択
- [データの取得]を選択
- [その他のデータソースから]を選択
- [空のクエリ]を選択

数式バーに[= #shared]を入力します。関数の一覧が表示されます。

全ての関数が出てくるので、見やすくする為にテキスト関数に絞ります。関数名(Name列)の右上の▽を選択します。

テキスト関数は、[Text.] が頭に付くので[Text.]と入力します。

関数の説明を確認するには、対象の関数名がある行のFunctionの右側をクリックすると閲覧できます。

最後に関数の動作を検証する方法です。Functionをクリックすると、実際に関数を適用するテキスト型データとその引数を入れることで関数の動作検証をすることができます。

関数とその結果を確認することができます。

スペースや改行等のクレンジング
余分なスペースや改行文字を取り除く方法を説明します。
余分なスペースを取り除く
最初に文字の前後にあるスペースを取り除く方法を説明します。半角、全角、スペースの数に関係なく取り除くことができます。
説明で利用するエクセルファイルをダウンロードして実際に操作をしてみましょう。
パワークエリエディタを開きます。
- テーブル内のセルを選択して[データ]タブを選択します。
- [テーブルまたは範囲から]を選択します。

トリミング機能を利用して半角全角に関わらず余分なスペースを取り除きます。
- トリミング対象の列を選択します。
- [変換]タブを選択します。
- [書式]を選択します。
- [トリミング]をクリックします。

文字の前後に存在している余分なスペースが削除されました。

余分な改行を取り除く
続いて改行文字を取り除く方法を説明します。
パワークエリエディタを開きます。
- テーブル内のセルを選択して[データ]タブを選択します。
- [テーブルまたは範囲から]を選択します。

クリーン機能を利用して余分な改行を取り除きます。
- 改行を取り除く対象の列を選択します。
- [変換]タブを選択します。
- [書式]を選択します。
- [クリーン]をクリックします。

余分な改行が削除されました。

セル結合をデータベース形式へ変換
セル結合されていると先頭行にしか値が入らない構造となってしまいます。パワークエリでデータ変換するには、データベースの形式にする必要があります。そこで、簡単にセル結合をデータベース形式へ変換する方法を説明します。
説明で利用するエクセルファイルをダウンロードして実際に操作をしてみましょう。
パワークエリエディタを開きます。
- テーブル内のセルを選択して[データ]タブを選択します。
- [テーブルまたは範囲から]を選択します。

パワークエリエディタで表示すると、以下のように先頭行にのみ値が入り、後はnull表記となります。データベース形式で考えてた場合、nullだと何のことか分からないので修正します。

- 対象列を選択して[変換]タブを選択します。
- [フィル]から[下]を選択します。

以下のように、nullが先頭行で埋められました。

エクセルに読み込むと以下のようになります。

文字位置による、テキストの部分的な抜き出し
例えば、3文字目から3文字を抜き出したりと、任意に指定した条件でテキストの部分的な切り出しをする方法を紹介します。
説明で利用するエクセルファイルをダウンロードして実際に操作をしてみましょう。
最初の文字の抜き出し
頭文字から指定した文字数を抜き出す方法です。
パワークエリエディタを開きます。
- テーブル内のセルを選択して[データ]タブを選択します。
- [テーブルまたは範囲から]を選択します。

- 対象の列を選択して[列の追加]を選択します。
- [抽出]から[最初の文字]をクリックします。

頭文字から抽出したい文字数を指定します。以下では、2を指定しています。

2と指定したので、頭文字から数えて2文字が抽出されました。

最後の文字の抜き出し
最後の文字から指定した文字数を抜き出す方法です。
パワークエリエディタを開きます。
- テーブル内のセルを選択して[データ]タブを選択します。
- [テーブルまたは範囲から]を選択します。

- 対象の列を選択して[列の追加]を選択します。
- [抽出]から[最後の文字]をクリックします。

最後の文字から抽出したい文字数を指定します。以下では、3を指定しています。

3と指定したので、最後の文字から数えて3文字が抽出されました。

指定範囲での文字の抜き出し
指定した範囲で文字を抜き出す方法です。
パワークエリエディタを開きます。
- テーブル内のセルを選択して[データ]タブを選択します。
- [テーブルまたは範囲から]を選択します。

- 対象の列を選択して[列の追加]を選択します。
- [抽出]から[範囲]をクリックします。

以下では、3文字目から3文字を抽出するように指定しています。開始インデックスは0から始まります。

3文字目から3文字が抽出されました。

区切り記号による、テキストの部分的な抜き出し
上記で説明した内容の応用ですが、区切り記号によるテキストの部分的な抜き出し方法を説明します。
説明で利用するエクセルファイルをダウンロードして実際に操作をしてみましょう。
区切り記号の前のテキストの抜き出し
指定した区切り記号より前のテキストを抜き出す方法です。
パワークエリエディタを開きます。
- テーブル内のセルを選択して[データ]タブを選択します。
- [テーブルまたは範囲から]を選択します。

- 対象の列を選択して[列の追加]を選択します。
- [抽出]から[区切り記号の前のテキスト]をクリックします。

区切り記号を指定します。以下では、@を指定しています。

@と指定したので、@より前のテキストが抽出されました。

区切り記号の後のテキストの抜き出し
指定した区切り記号より後のテキストを抜き出す方法です。
パワークエリエディタを開きます。
- テーブル内のセルを選択して[データ]タブを選択します。
- [テーブルまたは範囲から]を選択します。

- 対象の列を選択して[列の追加]を選択します。
- [抽出]から[区切り記号の後のテキスト]をクリックします。

区切り記号を指定します。以下では、@を指定しています。

@と指定したので、@より後のテキストが抽出されました。

区切り記号の間のテキストの抜き出し
指定した記号の間のテキストを抜き出す方法です。
パワークエリエディタを開きます。
- テーブル内のセルを選択して[データ]タブを選択します。
- [テーブルまたは範囲から]を選択します。

- 対象の列を選択して[列の追加]を選択します。
- [抽出]から[区切り記号の間のテキスト]をクリックします。

区切りの開始と終了を指定します。指定した間のテキストが抽出されます。

[@]と[.]間のテキストが抽出されました。

アルファベット文字の整形
アルファベットの大文字小文字をどちらかに統一したり、頭文字だけを大文字にしたりするアルファベットの整形方法を説明します。
説明で利用するエクセルファイルをダウンロードして実際に操作をしてみましょう。
アルファベットを全て子文字にする
大文字と小文字が混在しているテキストを小文字に統一する方法です。
パワークエリエディタを開きます。
- テーブル内のセルを選択して[データ]タブを選択します。
- [テーブルまたは範囲から]を選択します。

- 対象の列を選択して[列の追加]を選択します。
- [書式]から[小文字]をクリックします。

大文字小文字が混在していたが、全て小文字に変換されました。

アルファベットを全て大文字にする
大文字と小文字が混在しているテキストを大文字に統一する方法です。
パワークエリエディタを開きます。
- テーブル内のセルを選択して[データ]タブを選択します。
- [テーブルまたは範囲から]を選択します。

- 対象の列を選択して[列の追加]を選択します。
- [書式]から[大文字]をクリックします。

大文字小文字が混在していたが、全て小文字に変換されました。

アルファベットの頭文字のみ大文字にする
アルファベット表記は頭文字が大文字にすることが多いですが、その方法の説明です。
パワークエリエディタを開きます。
- テーブル内のセルを選択して[データ]タブを選択します。
- [テーブルまたは範囲から]を選択します。

- 対象の列を選択して[列の追加]を選択します。
- [書式]から[各単語の先頭文字を大文字にする]をクリックします。

大文字小文字が混在していたが、全て小文字に変換されました。

先頭を0埋めにする整形:Text.PadStart
0埋めが含まれているCSVデータをエクセルで開いて数値型で保存してしまい0が無くなる問題良くありますよね?0埋めを復活させる方法を説明します。
パワークエリエディタを開きます。
- テーブル内のセルを選択して[データ]タブを選択します。
- [テーブルまたは範囲から]を選択します。

数値型になっていると0埋めができないので、テキスト型に変換します。
- 列名の左側の[1.2.3]を選択
- メニューから[テキスト]を選択

- [列の追加]タブを選択
- [カスタム列]をクリック

Text.PadStart関数を入力します。以下の例では、先頭8桁を0埋めするという意味です。
Text.PadStart([0埋め],8,”0″)

全ての行が8桁となり、左側が0埋めになっています。

日付型を任意の日付テキストへ変換:Date.ToText
日付型を分かり易い日付の表記へ変換する方法です。
説明で利用するエクセルファイルをダウンロードして実際に操作をしてみましょう。
パワークエリエディタを開きます。
- テーブル内のセルを選択して[データ]タブを選択します。
- [テーブルまたは範囲から]を選択します。

日付型になっていないと関数が利用できないので、日付型に変換します。
列名の左側のアイコンを選択

メニューから[日付]を選択します。[日付/時刻]でも大丈夫な気がしますが、関数が使えません。

- [列の追加]タブを選択
- [カスタム列]をクリック

Date.ToText関数を入力します。以下の例では、20221215のような表記に変換しています。
Date.ToText([日付],”yyyyMMdd”)

指定した表記に変換されました。

・その他のフォーマット例
フォーマット | 表記 | 備考 |
yyyyMMdd | 20220205 | |
yyyy/MM/dd | 2022/02/05 | |
yyyy年M月d日 | 2022年2月5日 | MMだと02、Mだと2 |
yyyy年MM月dd日 | 2022年02月05日 | ddだと05、dだと5 |
yyyy年MM月dd日(ddd) | 2022年02月05日(土) | dddは、曜日なし |
yyyy年MM月dd日(dddd) | 2022年02月05日(土曜日) | ddddは、曜日あり |
列の値の結合:Text.Forma
列の値を結合して一つの文章を作る方法を説明します。
パワークエリエディタを開きます。
- テーブル内のセルを選択して[データ]タブを選択します。
- [テーブルまたは範囲から]を選択します。

- [列の追加]タブを選択
- [カスタム列]をクリック

Text.Format関数を入力します。以下の例で説明すると、#{0}#{1}#{2}が後半で定義している列名の順番です。[名前],[身長],[体重]が列名です。(使用できる列から挿入することが可能です。)
入力例:Text.Format(“#{0}の身長は、#{1}CMで体重は#{2}です。”,{[名前],[身長],[体重]})

定義した文章が作成されたました。

エクセル関数の場合、[&]でテキストを結合することができます。ただし、テキストしか結合することができません。Text.Format関数であれば、文字と数字が混在していても結合することが可能です。
文字の置換による整形
文字の置換を繰り返すことにより文字を整形していく方法を説明します。
説明で利用するエクセルファイルをダウンロードして実際に操作をしてみましょう。
方針:以下のバラバラになっているテキストを置換を繰り返して、同じテキストに統一させます。
Power Queryは最高のツール |
Power Query は最高のツール! |
Power Query は最高のツール! |
パワークエリエディタを開きます。
- テーブル内のセルを選択して[データ]タブを選択します。
- [テーブルまたは範囲から]を選択します。

- [変換]タブを選択
- [値の置換]をクリック

[power Query]を[パワークエリ]に置換します。

置換されました。

置換する値に全角スペースを入れ、置換後は値なしにします。

スペースが消えました。

最後に置換で余分な記号[!]を削除します。
置換する値に[!]を入れ、置換後は値なしにします。

[]が消えました。

パワークエリ学習コンテンツ
-
【初心者向け】パワークエリ入門:ETLツールを使ってエクセルデータを簡単に整形・統合しよう!(1/11)
-
【実践ガイド】パワークエリでデータ収集:Excel、CSV、PDF、Webデータを簡単に取り込む方法をマスターしよう!(2/11)
-
【総力特集】パワークエリで列操作をマスター:選択、変更、移動、削除、結合、分割の詳細解説&実践テクニック!(3/11)
-
【徹底解説】パワークエリで行操作をマスター!フィルター・保持・削除テクニックと練習用エクセルで実践学習(4/11)
-
パワークエリでデータクレンジング: 文字列結合、0埋め、テキスト関数をマスター(5/11)
-
パワークエリで四捨五入、切り捨て、切り上げをマスターする方法(6/11)
-
パワークエリで効率的なデータグループ化を実現する方法(7/11)
-
パワークエリで時間と日付の計算をマスター!便利な関数を使って効率アップ(8/11)
-
パワークエリで条件別集計をマスターする方法(9/11)
-
Excelパワークエリでクロス集計表とデータベース形式を瞬時に変換する方法(10/11)
-
Excelパワークエリ入門: 効率的なデータ整理をマスターしよう!(11/11)
コメント