目次
はじめに
弊社では、DMやはがきなどを印刷から発送まで請け負うことがありまして、お客様から発送先のExcelデータをお預かりし、そのデータを差し込んで印刷する、通称、バリアブル印刷という方法を得意としております。
そんななか、こちらのデータを整形する際に使用している優れたソフトが2年後くらいにサポート終了を迎えてしまうこともあり、代替をどうしようかと考えていて、最近では、ExcelのpowerQueryでいろいろと処理する方向に切り替えているところです。
たいていはpowerQueryでデータ整形することができるのですが、例えば半角カタカナを全角カタカナに変換するといった、文字列を一括で変換したい場合に都度一個一個の文字列置換だと結構手間だったので、今回は、こちらを一瞬で置き換える方法について紹介したいと思います。
また、おまけとして、RelaxToolsでもいろいろ一瞬で変換できるのでそちらも紹介します。
こちらは、Excelの関数やVBAを否定するものではありません。あくまでもいろいろなやり方の提案の一つだと考えていただけると幸いです。
なぜ関数やVBAを使わないのか?
エクセルの関数が得意な人からは、「そんなの関数あるいは、VBAで一瞬ですよ!」という声が聞こえてきそうです。というか、私自身がそう思っていました。
ですが、関数あるいはVBAの場合ですと、以下のデメリットが考えられます。
- 一見、どこにどんな関数、あるいはどこでVBA処理が入っているのかわからない。
- 作業の引継ぎ時にExcelが不得意で関数やVBAを知らない人だとなぞのエラーが発生する。
- 同じようなデータの入稿で、都度の関数設定が必要となる。(関数の場合)
- 元のデータを消去すると、例えば別シートで関数設定している場合、そちらのデータも消えてしまう。(関数の場合)
- VBAマクロはウェブサイトにアップするなどして共有するのがセキュリティ上難しくなってきている。(VBAの場合)
もちろん、すべて一人で作業しますとか、作業が1回だけしかない(関数の場合)ということであれば上記の点では問題ないわけですが、会社という組織で仕事をやっているケースだと、複数人が作業することも考える必要がありますし、複数回にわたって同様のデータではがきやDMを送るといったケースがありますので、こちらも基本的に自動で済ませたいという理由で関数はほとんど使うことがありません。
また、マクロに関しては、プログラミング自体の従業員への学習コスト(及び人件費)が高いためあえて推奨していません。
要は、先進的な技術をうまく活用しましょうってことを推奨しています。
方法(powerQuery編)
今回は、例えば半角カタカナを全角に置き換えてみましょう。
- STEP
変換テーブルの準備
- STEP
加工データの準備
- STEP
データの読み込み
新規でExcelを立ち上げます。
続いて、下図のように、データ>テキストまたはCSVからをクリックして、加工データ選択してファイルを読み込み、データの変換をクリックします。
続けて、下図のように、ホーム>新しいクエリ>新しいソース>ファイル>テキスト/CSVをクリックして、カタカナ全角半角変換テーブルを選択して読み込みます。
- STEP
データの変換
読み込んだデータを少し整理します。
タイトルがColumn1,2のような名前になっているので、もともとあるタイトルを使用するため、ホーム>変換>1行目をヘッダーとして使用をクリックします。
さて、いよいよ半角カタカナを全角に変換していきます。
下図のように、列の追加>全般>カスタム列をクリックします。
下図のように、新しい列名にフリガナ変換などとわかりやすい名前を入れて、カスタム列の式に以下の関数を入れます。
List.Accumulate(Table.ToRows(カタカナ半角全角変換テーブル),[フリガナ],(x,y)=>Text.Replace(x,y{0},y{1}))
こちらの関数に関しての詳細は割愛しますが、知りたい場合は、以下を参照ください。
実行すると一瞬で、このように半角だったカタカナをすべて全角に置き換えてくれます。
方法(RelaxTools編)
さて、次にRelaxToolsでの変換方法を紹介します。
- STEP
準備
上記のSTEP2のデータを使います。
これといった準備はありません。
- STEP
データ変換
それではさっそくデータ変換します。
下図のように、変換したい列(今回はB列)を選択して、RelaxTools>チェック/編集/変換>文字・日付>全角へ変換をクリックします。
すると、下図のように、半角カタカナを全角に変換してくれます。
さいごに
いかがだったでしょうか。今回は、powerQueryで変換テーブルといった何か定期的に置き換えたい文字列があった場合に一括で変換する方法について紹介しました。
今回の場合のように、単純に半角カタカナを全角にとか、全角英字を半角にとかであれば、RelaxToolsで一瞬に変換することができますが、ハイフンなどの記号、あるいは異体字(外字)などを置き換える場合にはこちらのように変換前、変換後のようにリストを毎回セットしてあげるだけで変換することが可能となります。
ぜひ実務で使ってみてください。
おまけ
ステップの数だけでみると、RelaxToolsの方が圧倒的に優れているように見えますが、RelaxTools側からの視点で独断で少し比較してみたいと思います。
- RelaxToolsをインストールしないと使えない。(ぜひインストールしてほしいところですが…)
- 特殊な文字、あるいは、特定の文章の変換などでは使えない。(例)「子供⇔子ども」、「取り消し⇔取消し」、「及び⇔および」など
- 一括で変換なので、ここだけ半角、やここだけ全角、あるいは大文字などの処理は個別に指定するしかない。
- Excel見ただけだとどんな処理をしたかが第三者が分からない。
- 決まった形式の文字列(ひらがな⇔カタカナ、全角⇔半角、大文字⇔小文字)であれば非常に簡単に処理できる
- テーブルなどを準備する必要がない。
- 別のウィンドウで処理する必要がない。
という具合に、一人で作業してて、もうこのデータは他で使うことがない、しかも、決まった形式の文字列のみの変換で問題ない、という場合は、RelaxTools一択でしょう。
ですが、今後も同じような変換をする可能性がある、または、他の第三者にも仕事を振る可能性があるなどの状況であれば、powerQuery一択なのではないでしょうか。
こう考えると、仕事環境ではpowerQuery一択といってもいいかもしれませんね。