2011年2月8日火曜日

確かにEXCELは超便利ツールではありますが。。。。。

この前、社長からEXCELを検証してくれと命ぜられた。

作成したのは以前のシステムの担当者。まぁ、コンピューターの事を知っている人間が作成したのだから検証するといっても大した手間でも無いと思っていたら大間違い。

最初に気付いたのがそのシート全体で数値の精度を決めていない。整数だけの計算ならば問題ないが、小数が入ってくる計算の場合、そのシート(システムと言うと堅苦しくなるが)全体で数値の精度を決めないと正確な計算結果が得られない。システムに携わっている人間とは思えないくらいひどい計算式だった。
また、時間を入力するようになっていたが、ユーザー独自の書式で値を入力させるようにしていたので、値がとんでもない値になっていた。これを普通に計算しようとすると、結果もとんでもない値が出てきてしまう。他にもいい加減な数式が多数有り、結局、検証ではなく、新規構築になってしまった。

でも、普通のユーザーはもっと何も考えていないかもしれない。EXCELはとても便利なツールだけど、一貫した考え方を持って作成しないと、とんでもない結果を引き出す可能性が大の諸刃の剣だ。実際、このEXCELを使っていた人からは、値を変えても結果が変わらないことが有り、これで良いのかなと思いながら使っていたと訊いたので、恐ろしいものだと思った。

これを読んでくれた人に対して、私からのアドバイス
小数を使うシートを作成する場合は、必ず数値の精度を決めてから作成に取りかかりましょう。例えば、○○の値は小数点第3位を四捨五入するとか、○○の値は小数点第2位を切り捨てとか、基本的な精度を決めましょう。EXCELは、1つのセルに値と書式の2つの情報を保持しています。例えば、1.2345という値を入れて、書式を数値にして、小数点以下の桁数を3桁に設定すると、1.235と表示されます。これはEXCELが自動的に値を小数点第4位を四捨五入してくれたからです。しかし、これは危険性をはらんでいます。表示の仕方次第で値の精度が変わってしまうからです。もし、誰かがセルの書式を標準に変えてしまったら、計算に使用される値は最初に入力した1.2345となってしまいます。こうならない為には、EXCELの関数を使って値の精度を決めましょう。四捨五入する場合はROUND関数、切り捨ての場合はROUNDDOWN、切り上げの場合はROUNDUPを使います。

書式
・四捨五入の場合、小数点第3位を四捨五入だったら、ROUND(値,2)、小数点第2位を四捨五入だったら、ROUND(値,1)
・切り捨ての場合、小数点第3位を切り捨てだったら、ROUNDDOWN(値,2)、小数点第2位を切り捨てだったらROUNDDOWN(値,1)
・切り上げの場合、小数点第3位を切り上げだったら、ROUNDUP(値,2)、小数点第2を切り上げだったらROUNDUP(値,1)

実際の値で説明すると
・1.2545を四捨五入の場合、小数点第3位を四捨五入だったら、ROUND(1.2545,2)=1.25、小数点第2位を四捨五入だったら、ROUND(1.2545,1)=1.3
・1.2545を切り捨ての場合、小数点第3位を切り捨てだったら、ROUNDDOWN(1.2545,2)=1.25、小数点第2位を切り捨てだったらROUNDDOWN(1.2545,1)=1.2
・1.2545を切り上げの場合、小数点第3位を切り上げだったら、ROUNDUP(1.2545,2)=1.26、小数点第2を切り上げだったらROUNDUP(1.2545,1)=1.3
知っておくと便利なのが、小数点以下を切り捨てのINT(値)。例えば、INT(1.23)=1、INT(1.9)=1。

時間の取り扱いも注意が必要です。ちょっと長文になるので時間についての解説は割愛します。

0 件のコメント:

コメントを投稿