NumbersでIF関数などを作ると、Excelに比べてすぐにエラーになって困りませんか?
これまでずっと、この点で苦労していました。
ちょっと関数に数値を入れただけで、すぐにエラーが出る。これでは、使い物にならない…なので、関数が含まれたファイルはNumbersでは無理かなあ、と諦めていました。
Numbersは情報量が少なすぎるし…
でも、一つの発見によって、その悩みや苦労が解消しました!
それは、「Numbersの関数式は数値そのものではなく、数値を入力したセルを作成せよ!」というものです。
素人が勝手に表現したものなので、適切かどうかは断言できませんが事実です。
同じことで困っている方には、参考にしていただけると思います。
では、論より証拠。
こちらの図をご覧ください。個人的にNumbersでタイムカードを作成したものです。
【完成版】Numbersでタイムカード作成方法(分単位の時給+給与計算まで)
カーソルのセルにはIF関数を入れています。
このような関数です。
もし、労働時間が空白なら空白、8時間以内なら退勤時刻−出勤時刻−昼休憩時間を表示、8時間以上なら8時間と表示せよ、というコマンドです。
真ん中の関数式をご覧ください。
8時間以上か以下かという場合分けをしていますが、8:00という数値を式には入れていません。
一番右に、後で非表示にする列を設けて、そこに数値を入力してそのセル自体を関数式に入れてますが、それでエラーが出ることなく正確に関数の数値を返してくれています。
そして、その隣のセルの残業時間のIF関数も、それで問題ありません。
これは、労働時間が8時間以内なら空白、8時間以上なら、労働時間から8時間を引いた時間を表示しなさいというコマンドですが、数値の入ったセルを式に含めることでうまくいっています。
ところが、この式に8:00と数値を入力するとこのようにエラーが出てしまいます。
エラーの原因は「8:00」が時刻か期間か判別できないからですね。
Numbersの場合は、なんとしても、関数式の中で時刻か期間かの区別をしなければなりません。
そこで、別途右端に必要な数値を入力したセルを設けることにより、時刻か期間かを区別させることができたわけです。
この場合は期間の数値を入力しましたが、もし時刻の数値にしたければ、時刻を入力することになります。
残業のセルも関数式に数値そのものを入力すると、エラーが発生しました。
では、8:00を数値ではなく、テキスト入力してみます。そうするとなぜか、エラーは出ませんでした。
おっ、うまくいったのかな、と一瞬思いましたが、残念、問題ありです。
8:00以上だったら8:00と表記せよとコマンドしているはずなのに、全労働時間がそのまま表記されている…そうすると、残業時間は隣に別途表記されているので重複して時間計算が合わなくなります。
テキストの8:00は数値にすると実質9:10よりも大きな値になるということですね。わかりました…
≧を≦にすると8:00になるのですが、これではおかしくて使えない…
惜しいですね。
9:10で月の時間合計をすると、8:00ではなく、本当に9:10で合計計算されてしまうので合わなくなります…
当たり前の話かもしれませんが。
残業時間のセルも関数にテキストの8:00を入れると、本来の意図と逆の結果になってしまいました。
8時間以上なら、労働時間から8時間を引いた時間を表示せよ、とコマンドしているのに、9:10の労働時間で空白になってしまう…
テキストに数値を入力しても、テキストとして認識するということですね。わかりました!
ということで、まとめです。
Numbersで関数を作るときには、数値そのものを入れるのはNGで、数値の入ったセル自体で構成させよ!ということがわかりました。
Excelと随分違うなあ、と違和感がありましたが、このことを理解すると、逆にNumbersの方がシンプルで使いやすいかも!と思った次第です。
特にiPadでNumbersを使う場合には。
個人的なNumbersでの関数式作成の体験談になりましたが、私と同様に情報が少ないためにわかりにくくて困っている方に少しでもお役に立てば幸いです。
では。
スポンサーリンク
コメント