New service "AwesomeQR"

エクセルの関数を使わずに文字列を一瞬で変換する方法【powerQuery】vs【RelaxTools】

4 min 836 views
文字列を一括で変換のアイキャッチ

はじめに

弊社では、DMやはがきなどを印刷から発送まで請け負うことがありまして、お客様から発送先のExcelデータをお預かりし、そのデータを差し込んで印刷する、通称、バリアブル印刷という方法を得意としております。

そんななか、こちらのデータを整形する際に使用している優れたソフトが2年後くらいにサポート終了を迎えてしまうこともあり、代替をどうしようかと考えていて、最近では、ExcelのpowerQueryでいろいろと処理する方向に切り替えているところです。

たいていはpowerQueryでデータ整形することができるのですが、例えば半角カタカナを全角カタカナに変換するといった、文字列を一括で変換したい場合に都度一個一個の文字列置換だと結構手間だったので、今回は、こちらを一瞬で置き換える方法について紹介したいと思います。

また、おまけとして、RelaxToolsでもいろいろ一瞬で変換できるのでそちらも紹介します。

こちらは、Excelの関数やVBAを否定するものではありません。あくまでもいろいろなやり方の提案の一つだと考えていただけると幸いです。

なぜ関数やVBAを使わないのか?

エクセルの関数が得意な人からは、「そんなの関数あるいは、VBAで一瞬ですよ!」という声が聞こえてきそうです。というか、私自身がそう思っていました。

ですが、関数あるいはVBAの場合ですと、以下のデメリットが考えられます。

  • 一見、どこにどんな関数、あるいはどこでVBA処理が入っているのかわからない。
  • 作業の引継ぎ時にExcelが不得意で関数やVBAを知らない人だとなぞのエラーが発生する。
  • 同じようなデータの入稿で、都度の関数設定が必要となる。(関数の場合)
  • 元のデータを消去すると、例えば別シートで関数設定している場合、そちらのデータも消えてしまう。(関数の場合)
  • VBAマクロはウェブサイトにアップするなどして共有するのがセキュリティ上難しくなってきている。(VBAの場合)

もちろん、すべて一人で作業しますとか、作業が1回だけしかない(関数の場合)ということであれば上記の点では問題ないわけですが、会社という組織で仕事をやっているケースだと、複数人が作業することも考える必要がありますし、複数回にわたって同様のデータではがきやDMを送るといったケースがありますので、こちらも基本的に自動で済ませたいという理由で関数はほとんど使うことがありません。

また、マクロに関しては、プログラミング自体の従業員への学習コスト(及び人件費)が高いためあえて推奨していません。

要は、先進的な技術をうまく活用しましょうってことを推奨しています。

方法(powerQuery編)

今回は、例えば半角カタカナを全角に置き換えてみましょう。

  1. STEP

    変換テーブルの準備

    まずは、こちらのような表を用意します。

    といっても、こちらのデータを作るのはやや面倒なので、こちらのファイルをダウンロードします。

    カタカナ半角全角変換テーブル
  2. STEP

    加工データの準備

    次に、変換したいデータベースを用意します。

    サンプルで試したい方は、こちらのファイルダウンロードしてください。

    このデータはもちろん架空のデータです。

  3. STEP

    データの読み込み

    新規でExcelを立ち上げます。

    続いて、下図のように、データテキストまたはCSVからをクリックして、加工データ選択してファイルを読み込み、データの変換をクリックします。

    続けて、下図のように、ホーム新しいクエリ新しいソースファイルテキスト/CSVをクリックして、カタカナ全角半角変換テーブルを選択して読み込みます。

  4. STEP

    データの変換

    読み込んだデータを少し整理します。

    タイトルがColumn1,2のような名前になっているので、もともとあるタイトルを使用するため、ホーム変換1行目をヘッダーとして使用をクリックします。

    さて、いよいよ半角カタカナを全角に変換していきます。

    下図のように、列の追加全般カスタム列をクリックします。

    下図のように、新しい列名にフリガナ変換などとわかりやすい名前を入れて、カスタム列の式に以下の関数を入れます。

    List.Accumulate(Table.ToRows(カタカナ半角全角変換テーブル),[フリガナ],(x,y)=>Text.Replace(x,y{0},y{1}))

    こちらの関数に関しての詳細は割愛しますが、知りたい場合は、以下を参照ください。

    実行すると一瞬で、このように半角だったカタカナをすべて全角に置き換えてくれます。

    タイトルも置き換えてくれるんですね。

方法(RelaxTools編)

さて、次にRelaxToolsでの変換方法を紹介します。

  1. STEP

    準備

    上記のSTEP2のデータを使います。

    これといった準備はありません。

  2. STEP

    データ変換

    それではさっそくデータ変換します。

    下図のように、変換したい列(今回はB列)を選択して、RelaxToolsチェック/編集/変換文字・日付全角へ変換をクリックします。

    すると、下図のように、半角カタカナを全角に変換してくれます。

さいごに

いかがだったでしょうか。今回は、powerQueryで変換テーブルといった何か定期的に置き換えたい文字列があった場合に一括で変換する方法について紹介しました。

今回の場合のように、単純に半角カタカナを全角にとか、全角英字を半角にとかであれば、RelaxToolsで一瞬に変換することができますが、ハイフンなどの記号、あるいは異体字(外字)などを置き換える場合にはこちらのように変換前、変換後のようにリストを毎回セットしてあげるだけで変換することが可能となります。

ぜひ実務で使ってみてください。

おまけ

ステップの数だけでみると、RelaxToolsの方が圧倒的に優れているように見えますが、RelaxTools側からの視点で独断で少し比較してみたいと思います。

デメリット
  • RelaxToolsをインストールしないと使えない。(ぜひインストールしてほしいところですが…)
  • 特殊な文字、あるいは、特定の文章の変換などでは使えない。(例)「子供⇔子ども」、「取り消し⇔取消し」、「及び⇔および」など
  • 一括で変換なので、ここだけ半角、やここだけ全角、あるいは大文字などの処理は個別に指定するしかない。
  • Excel見ただけだとどんな処理をしたかが第三者が分からない。
メリット
  • 決まった形式の文字列(ひらがな⇔カタカナ、全角⇔半角、大文字⇔小文字)であれば非常に簡単に処理できる
  • テーブルなどを準備する必要がない。
  • 別のウィンドウで処理する必要がない。

という具合に、一人で作業してて、もうこのデータは他で使うことがない、しかも、決まった形式の文字列のみの変換で問題ない、という場合は、RelaxTools一択でしょう。

ですが、今後も同じような変換をする可能性がある、または、他の第三者にも仕事を振る可能性があるなどの状況であれば、powerQuery一択なのではないでしょうか。

こう考えると、仕事環境ではpowerQuery一択といってもいいかもしれませんね。

関連記事