目次
はじめに
弊社では、印刷業界言われているバリアブルプリント(簡単に説明しますとWordの差し込み文書のようなもの)を得意としておりまして、様々な差し込み印刷を経験してきました。
ですが、この差し込み文書というのは簡単に見えますが、意外とデータがきちんとしていないとうまくいかないので、このデータベース(主にExcelやCSVなどのデータソース)の整形は社内でも得意としているところであります。
以前から弊社でもたびたびニュースで取り上げますが、最近よく使用するのがExcelのPowerQueryでして、この圧倒的に優れたExcelの機能でデータをきれいに整形するノウハウをためていっているところです。
そんな中、弊社の従業員の一人からちょっと面白い質問があって、それを解決するやり方を少し考えたところ、小学3年生で学んだ割り算(余りがある)が使えると思いましたので、それをシェアしたいと思います。
なにが問題だったか?
問題としては極めてシンプルで、例えば下図左のようにお名前、メールアドレスがズラッと2列で並んでいるものを、3行分のお名前を下図右のように1行にそれぞれまとめていきたいということでした。
上記は架空のお名前とメールアドレスの組み合わせですので、ご安心ください。
この話を聞いた時、珍しく自分でもやったことがない話だったのでとてもワクワクしました。
ただ、小学3年生の知識である割り算(余りがある)を知っていたため、PowerQueryでの割り算の余りの計算をどうするのかを調べた結果、サクッと上図のように解決しました。
さて、上記ではすでに完成したデータですが、はたしてなぜ小学3年生の割り算が出てくるのでしょうか?
それは、割り算の「余り」がその割り算の「商」ごとに規則的に数字として出てくるからです。
と言ってしまえば、「なるほどね!」とわかる人は簡単ですが、「マジで意味不明!」「実際にどうするの?」って話になりましたので、実際の方法を紹介したいと思います。
方法
- STEP
データにインデックスを付与
下図のように、追加の列>全般>インデックス列で、インデックスを付与します。
- STEP
余りの計算【これが小学3年生の知識】
続いて、余りの計算をしていきます。
本来、汎用的に使うため一般化するために「X」などという文字を使いたいところですが、ここでは今回の例題通りの数値を入れて紹介します。(一般化したい方は、以下、3をXと置き換えて考えればいいと思います。)
今回は、3行ずつのデータを3列に展開したいということなので、下図のように列の追加>全般>カスタム列で以下の式を入力します。
Number.Mod([インデックス], 3)
すると、下図のように、新しい列には「0」、「1」、「2」のみが定期的に入ります。
関数の意味は英語なんでよくわからないかもしれませんが以下のとおりです。
おそらくここで感のいい方は、「オッケー、分かった!」となる人もいるかもしれませんが、続けて説明していきます。
- STEP
3グループに分割
続いて、データを3個に分割します。
下図のように、クエリデータの上で右クリックをするとメニューが出てきますので、参照をクリックします。
すると、下図のように、新しいデータを作成できます。
こちらをあと2個作成すると、下図のようになります。
続けてそれぞれのデータをフィルタをかけてグループ化します。
まずは、1個目に作ったデータのmod(割り算の余り)の列で下図のように0を選択してフィルタをかけます。
同様に、以下のように2個目は1、3個目は2でフィルタをかけます。
続いて、下図のようにそれぞれのデータに再びインデックスを振ります。
- STEP
データの統合
最後に3個のデータを統合します。
ホーム>統合>クエリのマージの右の▼をクリックして、新規としてクエリをマージをクリックします。
続けて、下図のように上のデータはmod(割り算の余り)が1、下のデータはmodが2のデータを選択し、マージ(統合)するキーをインデックス.1を選択してクリックします。
続けて再度、クエリのマージを選択して、下図のように上のデータは上記で作ったデータとして、下のデータはmodが0のデータを選択して、マージするキーを上記同様にインデックス.1とします。
すると、下図のようになります。
続いて、統合したそれぞれのデータを展開します。
下図のようにデータ列の右にあるボタンをクリックして、必要な情報(ここでは氏名とメールアドレス)を選択します。
同様にもうひとつのデータも展開すると、下図のようになります。
不要な列を削除すると完成です。
さいごに
いかがだったでしょうか。
やり方は他にもあると思いますが、算数で習った余りの計算が使えるというなかなか面白い事例だったので記事にしてみました。
今回のように小学校、中学校などに勉強した算数や数学のような知識が仕事で活かせる場面はかなりあるように思えますので、またそういった事例がありましたら紹介したいと思います。