「カスタム列」などで計算を行った際に、その計算結果に小数点以下の値が含まれている場合もある。これを整数にする最も簡単な方法は、データ型を「整数」に変更することだ。ただし、以降の計算にも影響を与えるため、整数化するタイミングに注意する必要がある。今回は、数式の計算結果とデータ型について説明していこう。

  • データ型を変更して計算結果を「整数」にするときの注意点

データ型を変更して計算結果を「整数」にする

ここでは、簡単な商品リストを使って解説を進めていこう。このデータ表には、各商品の「商品ID」と「税抜価格」がまとめられている。

  • 「Power Query エディター」に取得したデータ表

まずは、このデータ表に消費税(10%)を加えた「税込価格」を追加してみよう。この計算を「カスタム列」で実行するときは、=[税抜価格]*1.1 と数式を入力すればよい。

  • 「税込価格」を計算する数式

結果は以下の図のようになる。当然ながら、この計算結果には小数点以下の値も含まれている。

  • 計算結果として追加された列

価格などを計算するときは、最終的な値を整数として示したい場合もあるだろう。これを手軽に実現できるのが、データ型を「整数」に変更する方法だ。

  • 「税込価格」のデータ型を「整数」に変更

すると、各データの小数点以下が四捨五入され、「税込価格」を整数として示せるようになる。

  • 四捨五入により「整数」に変換されたデータ

以上が、計算結果を整数にする最も手軽な方法となる。ただし、安易に利用すると、予想外の結果を招いてしまう恐れがある。続いては、データ型を「整数」にするときの注意点を紹介していこう。

「整数」のデータ型と計算の関係

今度は、期間限定で2割引のセールを実施する場合を考えてみよう。2割引後の税込価格は「税込価格」×0.8で計算できる。これを数式で記述すると、=[税込価格]*0.8 となる。

  • 「2割引の税込価格」を計算する数式

この計算結果は以下の図のようになる。それぞれの行で「税込価格」×0.8が計算され、その計算結果が「2割引の税込価格」として表示されている。

  • 計算結果として追加された列

1行目のデータに注目して見ていこう。上図を見ると、「税抜価格」は116となっており、それを0.8倍した92.8が「2割引の税込価格」として表示されている。こちらも小数点以下を含む数値になっているので、データ型を「整数」に変更する。すると、小数点以下が四捨五入されて「2割引の税込価格」は93円になる。

  • 「2割引の税込価格」のデータ型を「整数」に変更

では、同様の計算をExcelで行った場合、どのような結果になるだろうか? 実際に試してみたのが以下の図だ。「税込価格」と「2割引の税込価格」は、小数点以下の表示桁数を0桁に指定することにより整数として表示している。

  • Excelの「表示形式」を整数表示にした場合(1)

ただし、これは見た目上の話でしかなく、各セルには“四捨五入する前の数値”が記録されている。1行目の場合、C3セル(105)を1.1倍した115.5が「税込価格」として記録されることになる。試しに、表示形式を「標準」に戻してみると、115.5という数値が表示されることを確認できるだろう。

同様に「2割引の税込価格」は、D3セル(115.5)を0.8倍した92.4という数値になる。これが四捨五入されて、92円と表示されている訳だ。先ほどパワークエリで計算した93円と比べて、1円の誤差が生じているのを確認できるだろう。

  • Excelの「表示形式」を整数表示にした場合(2)

この誤差は、数値データを整数として表示するときの「処理方法の違い」に起因している。Excelの表示形式は、あくまで“見た目”を変更するものでしかなく、数値データそのものを変換する機能ではない。一方、パワークエリでデータ型を「整数」に変更した場合は、数値データそのものが整数に変換されてしまう。よって、以降の計算にも影響を与えることになる。

では、どのように処理すれば、パワークエリでもExcelと同じように計算できるだろうか? 誤差が生じないように計算するには、「税込価格」を整数に変換しないで、小数点以下の値を含めた状態のまま「2割引の税込価格」を計算しなければならない。

  • データ型を指定していない「税込価格」

  • 「2割引の税込価格」を計算する数式

すると、1行目のデータは115.5×0.8という計算になり、Excelと同じ計算結果(92.4)を得ることができる。

  • 計算結果として追加された列

その後、「2割引の税込価格」のデータ型を「整数」に変更すると、小数点以下が四捨五入されて92円という結果になる。

  • 「2割引の税込価格」のデータ型を「整数」に変更

要するに、誤差が生じないように計算するには、途中でデータ型を「整数」に変更するのではなく、小数点以下を含めた状態のまま計算を進めていく必要がある訳だ。Excelに慣れている方ほど勘違いしやすいポイントなので、間違えないように注意しておこう。

データ型を変更するステップを並べ替えた場合

続いては、データ型を変更するステップを並べ替えたときの挙動を紹介しておこう。状況を把握しやすいように、それぞれのステップ名をカスタマイズした例で話を進めていく。

以下の図は、

(1)「税込価格」を計算する
(2)「税込価格」のデータ型を「整数」に変更する
(3)「2割引の税込価格」を計算する
(4)「2割引の税込価格」のデータ型を「整数」に変更する

という順番で処理を指定した例だ。「税込価格」を整数に変換してから「2割引の税込価格」を計算しているため、現時点では誤差のある計算方法になっている。

  • カスタマイズしたステップ名

この誤差をステップの並べ替えにより解消してみよう。「税込価格」を整数型にするステップを1つ下へ移動し、処理の順番を入れ替える。

  • データ型を「整数」にするステップを移動

すると、処理手順が以下のように変更される。

(1)「税込価格」を計算する
(2)「2割引の税込価格」を計算する
(3)「税込価格」のデータ型を「整数」に変更する
(4)「2割引の税込価格」のデータ型を「整数」に変更する

この場合、整数に変換する前の「税込価格」で「2割引の税込価格」が計算されるため、誤差のない計算結果を得ることが可能となる。

  • ステップ移動後の計算結果

1行目のデータを見ると、「2割引の税込価格」が92.4円になっているのを確認できるだろう。これは、115.5×0.8を計算した結果となる。その後、データ型が「整数」に変更され、「税込価格」のデータが115.5から116に変換された、というのが上図の状況になる。

なお、現時点では(3)のステップが選択されているため、(4)のステップはまだ処理されていない。このため、「2割引の税込価格」は整数に変換する前の92.4という数値になっている。

このように「データ型を変更するステップ」を並べ替えることで、誤差を解消できるケースもある。逆に考えると、ステップの並べ替えが計算結果に影響を及ぼす場合もある訳だ。よって、こちらにも注意しておく必要がある。基本的には、「すべての計算を終えた後にデータ型を整数する」と考えておけば、余計な計算ミス(誤差の発生)を回避できるはずだ。

データ型を「整数」に変更したときの四捨五入について

最後に、データ型を「整数」に変更するときの四捨五入について補足しておこう。通常の四捨五入では、端数が4以下のときは“切り捨て”、5以上のときは“切り上げ”として処理する。しかし、パワークエリの四捨五入は少し違う。

状況を比較しやすいように、2つの列に「同じ数値」を入力した例を使って解説していこう。現時点では、2つの列に「10進数」のデータ型が指定されている。

  • データ型を変更する前の状態

続いて、2列目だけデータ型を「整数」に変更すると、以下の図のような結果になる。それぞれの数値を順番に見比べていこう。

  • データ型を「整数」に変更した結果

7.5を四捨五入した結果は8になっている(1行目)。これは通常の四捨五入と同じ結果といえる。結果が異なるのは、次の8.5だ(2行目)。上図を見ると、8.5を四捨五入した結果は8と表示されている。一般的な四捨五入であれば、8.5は9に切り上げされるはずだ。しかし、そうなっていない。10.5(4行目)や12.5(6行目)も同様である。

これは「銀行丸め」と呼ばれる四捨五入で、「端数が0.5であった場合は、最も近い偶数に数値を丸める」というルールになっている。このため、8.5は9(奇数)ではなく8(偶数)に丸められる。10.5や12.5も同様だ。

なお、偶数に丸められるのは「端数がジャスト0.5のときのみ」となる。12.51のように端数が0.5より大きくなると、普通に切り上げが行われる。

少し違和感を覚える処理方法かもしれないが、パワークエリでは、これが既定の四捨五入になっている。ということで、次回の連載では「数値の丸め」(切り上げ/切り捨て/四捨五入)について詳しく解説していこう。