新しいサービス【AwesomeQR】

なぜ割り算で余りを計算するのか?小学3年生の算数がExcelのPowerQueryでも役立つちょっと面白い話

3 min 705 views

はじめに

弊社では、印刷業界言われているバリアブルプリント(簡単に説明しますとWordの差し込み文書のようなもの)を得意としておりまして、様々な差し込み印刷を経験してきました。

ですが、この差し込み文書というのは簡単に見えますが、意外とデータがきちんとしていないとうまくいかないので、このデータベース(主にExcelやCSVなどのデータソース)の整形は社内でも得意としているところであります。

以前から弊社でもたびたびニュースで取り上げますが、最近よく使用するのがExcelのPowerQueryでして、この圧倒的に優れたExcelの機能でデータをきれいに整形するノウハウをためていっているところです。

そんな中、弊社の従業員の一人からちょっと面白い質問があって、それを解決するやり方を少し考えたところ、小学3年生で学んだ割り算(余りがある)が使えると思いましたので、それをシェアしたいと思います。

こちらは実際の仕事に使いました!

なにが問題だったか?

問題としては極めてシンプルで、例えば下図左のようにお名前、メールアドレスがズラッと2列で並んでいるものを、3行分のお名前を下図右のように1行にそれぞれまとめていきたいということでした。

powerQueryのMOD関数を使った結果の画像

上記は架空のお名前とメールアドレスの組み合わせですので、ご安心ください。

この話を聞いた時、珍しく自分でもやったことがない話だったのでとてもワクワクしました。

ただ、小学3年生の知識である割り算(余りがある)を知っていたため、PowerQueryでの割り算の余りの計算をどうするのかを調べた結果、サクッと上図のように解決しました。

さて、上記ではすでに完成したデータですが、はたしてなぜ小学3年生の割り算が出てくるのでしょうか?

それは、割り算の「余り」がその割り算の「商」ごとに規則的に数字として出てくるからです。

と言ってしまえば、「なるほどね!」とわかる人は簡単ですが、「マジで意味不明!」「実際にどうするの?」って話になりましたので、実際の方法を紹介したいと思います。

方法

  1. STEP

    データにインデックスを付与

    下図のように、追加の列全般インデックス列で、インデックスを付与します。

    上図は分かりやすいようにインデックスは、1から始めてますが0からでも構いません。

  2. STEP

    余りの計算【これが小学3年生の知識】

    続いて、余りの計算をしていきます。

    ここが今回のポイントになります。

    本来、汎用的に使うため一般化するために「X」などという文字を使いたいところですが、ここでは今回の例題通りの数値を入れて紹介します。(一般化したい方は、以下、3をXと置き換えて考えればいいと思います。)

    今回は、3行ずつのデータを3列に展開したいということなので、下図のように列の追加全般カスタム列で以下の式を入力します。

    Number.Mod([インデックス], 3)

    すると、下図のように、新しい列には「0」、「1」、「2」のみが定期的に入ります。

    関数の意味は英語なんでよくわからないかもしれませんが以下のとおりです。

    おそらくここで感のいい方は、「オッケー、分かった!」となる人もいるかもしれませんが、続けて説明していきます。

  3. STEP

    3グループに分割

    続いて、データを3個に分割します。

    下図のように、クエリデータの上で右クリックをするとメニューが出てきますので、参照をクリックします。

    すると、下図のように、新しいデータを作成できます。

    ここで、複製ではなく、参照を使ったのは、2度と同じデータを使わないような場合特に意味はありませんが、共通のステップをまとめるという意味があります。

    こちらをあと2個作成すると、下図のようになります。

    続けてそれぞれのデータをフィルタをかけてグループ化します。

    まずは、1個目に作ったデータのmod(割り算の余り)の列で下図のように0を選択してフィルタをかけます。

    同様に、以下のように2個目は1、3個目は2でフィルタをかけます。

    続いて、下図のようにそれぞれのデータに再びインデックスを振ります。

    このインデックスは後でデータをまとめる際のキー(IDのようなもの)となります。

  4. STEP

    データの統合

    最後に3個のデータを統合します。

    ホーム>統合>クエリのマージの右の▼をクリックして、新規としてクエリをマージをクリックします。

    続けて、下図のように上のデータはmod(割り算の余り)が1、下のデータはmodが2のデータを選択し、マージ(統合)するキーをインデックス.1を選択してクリックします。

    続けて再度、クエリのマージを選択して、下図のように上のデータは上記で作ったデータとして、下のデータはmodが0のデータを選択して、マージするキーを上記同様にインデックス.1とします。

    すると、下図のようになります。

    続いて、統合したそれぞれのデータを展開します。

    下図のようにデータ列の右にあるボタンをクリックして、必要な情報(ここでは氏名とメールアドレス)を選択します。

    同様にもうひとつのデータも展開すると、下図のようになります。

    不要な列を削除すると完成です。

さいごに

いかがだったでしょうか。

やり方は他にもあると思いますが、算数で習った余りの計算が使えるというなかなか面白い事例だったので記事にしてみました。

今回のように小学校、中学校などに勉強した算数や数学のような知識が仕事で活かせる場面はかなりあるように思えますので、またそういった事例がありましたら紹介したいと思います。

学んだことがある知識がテスト以外の違った形で活かせるのはいい話ですよね

関連記事