( 2 )数値の配賦と端数調整

Excelで関数を使って計算をすると、その計算された結果には単位未満の端数が生ずることが大半です。しかし、Excelのセルは標準設定では単位未満の値は「隠れて」いるため、無限にあるかもしれない単位未満の端数はまったくわかりません。

さて、数値を特定の作業や部門やセグメントに配賦することはよくあることです。この場合、配賦された各数値が割り切れることはほぼ皆無といってよいでしょう。ところで、端数処置をキチンと行うと、配賦額をすべて合計すると元の数値と一致しないことになります。どう調整すればよいでしょうか。

まさに、「とりあえず貸借合わせるためにここに端数を入れました」と「端数は計算した結果ここで生じているのでここでこのように調整してます」とするかの差が如実に出るところです。

端数問題

私はExcelデータを入手した場合、まずセルの表示を小数点以下10桁くらいまで表示することにしています。

そうすると、各セルに無限に近い小数点以下の端数が出てくることが少なくありません。

これは、まさに数値を作る際に関数を入れただけで、その端数処理はそのままであったということになります。なお、小計値や合計値も端数の額を小計したり合計しているため、なんとなく小計値や合計値となっていることになります。

これはどういう結果を招くかと申しますと、目に見えている数値の合計と実際の数値の合計に違いが生じることになります。Excelの標準的なセル表示では、1円未満(小数点以下)については四捨五入した数値が「見えて」います。この「見えた数値」を合計すると、実際の合計とは当然合わなくなります。 計算対象となるセルの数が多ければ多いほどその差が顕著になります。

ここで、「1円ごときでいちいち細かいな」とのご批判があるだろうことはじゅうじゅう承知しております。「1円を笑う者は・・・」という説法はともかく、どんな巨大な企業でも、1円単位で取引を行いますし、仕訳は1円単位で行いますよね。その仕訳も借方と貸方で1円ズレていたら仕訳として成立しないのです。

千円単位でなんらかの計算を行っている場合には、その端数は千円の違いとなりますし、百万円単位で行っている場合には、その端数は百万円の違いとなります。

二重の端数

原価計算や部門別計算などを行う場合、一定の数値をいくつかの作業や部門やセグメントなどに配賦することがよく行われます。

たとえば、人件費の計算で、各エンジニアの当月の人件費を、当月の労働時間を基準として、エンジニアが申告した各作業(「研究開発」「既存製品のメンテナンス」「新製品制作」「その他」)にかかった時間で配賦するとします。

配賦にあたっては、当月の人件費を当月の労働時間で除し(いわゆる賃率)、これを各作業の時間を乗じます。つまり、「賃率の計算」と「賃率に作業時間を乗じる計算」というふたつの計算があるわけです。

まず、人件費を労働時間で除したときに端数が生じる可能性が極めて高いわけですが、この段階で1円未満の端数を調整すると、 各作業に配賦される額は端数が生じないことになります。しかし、各作業に配賦された額を合計した値は、配賦前の人件費よりも確実に少ない額になります。なぜなら、配賦前の段階で端数が調整されているからです。この場合には、なんらかの作業に不足金額を加えることで対応することになりましょう。

しかし、この方法には重要な前提があります。つまり「各作業の作業時間に端数がない」場合です。もし、各作業の作業時間に端数(分など)があると、 賃率の計算のレベルで端数を調整したとしても、今度は配賦のレベルでまた端数が生じてしまうことになります。

つまり、 二重の端数です。

これに対処するために、各作業時間で端数が生じないように調整するという方法も考えられなくもありません。しかし、この方法では、もともとの人件費の計算の基礎となる労働時間との間にズレが生じてしまうことが考えられます。分母と分子合計が異なることになり、端数処理以前の問題となります。

また、この方法によれば、もし各作業時間に変更があった場合、あらためて作業時間の端数調整をする必要がありますが、少なくとも私の場合、焦ってその作業をすっかり忘れがちです。

この種にかぎらず、 なんらかの計算を行う場合には「条件やシナリオ等が修正された場合にもフレキシブルに対応できるのかどうか」が重要だと思われます。

少なくとも、各作業時間は計算の最終結果ではなく、配賦額を計算をするための一要素です。このため、端数があってもかまわないと思います。1時間単位であっても分単位の端数が生じるのは当然だからです。問題は、許容される端数のレベルです。分単位の端数はあったとしても、無限の端数があるのはおかしな話です。少なくとも、許容されるレベルの端数を含めた各作業時間の合計額と労働時間と完全一致することを確かめるべきです。

途中で端数処理は行わず、最終数値で端数調整を

ここで、問題点をあらためて申し上げます。

Excelでは単位未満の端数表示はされないため、1円未満の端数処理を怠ってしまうと、見た目の数字の合計額とExcelで関数を入れた合計額は異なることになります。

たとえば、人件費の計算で、各エンジニアの当月の人件費を、当月の労働時間を基準として、エンジニアが申告した各作業(「研究開発」「既存製品のメンテナンス」「新製品制作」「その他」)にかかった時間で配賦するとします。

まず、各エンジニアの人件費を各作業に配賦する段階で端数が発生しますが、端数が表示されない見た目の数字(配賦額)の合計額が配賦前の値と一致しないことが起こります。横計のズレともいえます。次に各エンジニアの合計額の段階でも、個々のエンジニアの配賦額で端数が生じているために、各エンジニア全員の合計額と一致しないことが起こります。縦計のズレともいえます。

複数の計算を行う場合には(上記の例では「賃率の計算」と「賃率に作業時間を乗じる計算」というふたつの計算)、 計算途中で端数調整を行わず、計算結果のところで端数調整を行います

まず、人件費を労働時間で除したときに端数が生じる可能性が極めて高いわけですが、ここでは「なりゆき」で端数調整は行いません。そして各作業に係る作業時間を乗じて配賦額を算定します。この配賦額のところで、1円未満の端数を調整します。端数処理については、通常は四捨五入(ROUND)か切り捨て(ROUNDDOWN)が考えられます。切り捨ての場合には、各配賦額の合計額は配賦前の額よりも確実に少なくなり、しかも、端数が生じる項目だけ差額が大きくなります。差額はあまり生じないことを望むのであれば、四捨五入を採用することになります。

いずれにせよ、1円未満の端数調整を行うことで、各セルで見えているビジブルな数値の裏には何も隠れていないことになります。

端数処理で生じた差額への対応

端数処理でスッキリしても、今度は端数処理によって各配賦額の合計額と配賦前の額には誤差が生じることになります。この処理をどうするかが問題となります。

では、ここまでのように、エンジニアの人件費を各作業(「研究開発」「既存製品のメンテナンス」「新製品制作」「その他」)にかかった時間で配賦する例で検討してみたいと思います。

まず、各作業も、「積極的に確実に計算しておきたい作業」と「それほどのタイトネスは求められない作業」に分けられるはずです。上記の各作業のうち、「新製品制作」がソフトウェア固定資産の取得価額を構成するため期間損益に重要な影響を与えます。その他の作業は費用になる点では同じですが、「研究開発」は税額控除の額に影響します。だとすると、あまり重視されない、といいますか、積極的に計算した作業の残余部分となる作業に端数を調整すべきということになります。そこで「その他」の作業時間で端数を調整するものとします。

人件費を労働時間(各作業時間の合計時間と完全一致します)で除します。ここで端数調整は行いません。そして、各作業の作業時間を乗じます。この結果について端数調整を行います。これによって、各作業時間の配賦額はすべて1円未満の端数は生じません。

行または列を2つ挿入します。一つ目のセルは、「研究開発」「既存製品のメンテナンス」「新製品制作」「その他」を合計した額を計算するセルで、二つ目のセルは、一つ目のセルで計算した各配賦額の合計額と配賦前の人件費との差額を計算するセルです。このふたつのセルを作ることによって、端数がどの程度生じているのかをハッキリとつかむことができます。そして、端数を明示する二つ目のセルは「その他」の作業として集計するようにするのです。

イメージ的には、配賦された「研究開発」「既存製品のメンテナンス」「新製品制作」「その他」の合計額を計算する一つ目のセルは実際には小計額を意味し、動かし得ない合計額(配賦前の人件費の額)との差額として二つ目のセルが機能していることになります。

この方法によって、労働時間が変化しても、人件費が変化しても、端数額が明示され、かつ、調整されるために、端数処理は万全ということになります。

各エンジニアの各配賦額はすべて端数処理が行われているので、各エンジニアの配賦額を集計した数値も、配賦前の合計額と完全に一致していることになります。

( つづく )