• 締切済み

Excelエラー表示######を表示させない方法

下記の問題についてご指導を頂ける方、よろしくお願い致します。 使用機種等は、Windows 8.1 Excel 2013 を使用しています。 説明が長文で申し訳ありません。 作成中のエクセルの表で説明を求めるのが筋ですが、OKWaveで表示する方法が判らず、理解し難いでしょうがよろしくお願い致します。 従業員(インドネシア人)の定時労働時間・時間外時間・休日労働時間・労働日数をエクセルの表からリンクさせ、数値を求める表を作成したのですが、日によっては時間外時間がエラー表示「######」が表示されました。 セル幅が狭くて表示されるのではありません。 各列のAは日、Bは曜日、C:D(セルを結合)は始業時刻、Eは~(から)、F:G(セルを結合)は終業時刻、H:I(セルを結合)最低時間、J:K(セルを結合)は休憩時間、L:M(セルを結合)は実働時間、N:O(セルを結合)は時間外時間 を示します。 エクセルの表で、各列の該当日の始業時刻・終業時刻・最低時間・休憩時間(ここまでは手入力)で計算式は、・実働時間・時間外時間 のみ簡単な計算式が入れています。 計算式は、実働時間に =F8-C8 、時間外時間に =L8-H8-J8 当然各行にも、該当行の公式が入っています。 日・曜日・Eの~(から)は最初から入力しておき、修正されては困るセルは保護してあります。 実際の入力例は、下記のとおりです。 1 月 7:00 ~ 11:00 4:00 0:00 4:00 ###### 2 火 5:30 ~ 15:30 8:00 1:00 10:00 1:00 3 水 5:10 ~ 15:00 8:00 1:00 9:50 0:50 時間外時間が、0:00のように表示される方法をご指導下さい。

みんなの回答

  • bunjii
  • ベストアンサー率43% (3589/8249)
回答No.5

>時間外時間が、0:00のように表示される方法をご指導下さい。 エラーの原因は最低時間を手入力しているため時間外時間の計算値に微小な計算誤差が生じているようです。 計算過程と結果は下記のようになり、微小の計算誤差が生じています。 =L8-H8-J8 → ("11:00"-"7:00")-"4:00"-"0:00" → -2.77556E-17 最低時間のセルに下記の数式を入力することで誤差をキャンセルできます。 H8=MIN(F8-C8,"8:00"*1) 管理システム上で最低時間を手入力しなければならない場合は時間外時間の計算を下記の数式に置き換えてください。 L8=MAX(L8-H8-J8,0)

  • msMike
  • ベストアンサー率20% (364/1804)
回答No.4

簡単です。 式 =L8-H8-J8 を =ROUND(L8-H8-J8,5) に変更してみてください。 ついでに、 式 =F8-C8 も =ROUND(F8-C8,5) にしておきませう。 理由?知りたい? Excel は、簡単に言えば、「小数点の計算には弱い」から、なのです。

kakitaka0331
質問者

お礼

早速のご指導ありがとうございました。 教えのとおりに修正しましたら、###### が消えて求めたい数値が表示されました。 これによりそれぞれのリンク先に数値が飛び、賃金台帳がエラーも表示されずに作成出来ました。 本当にありがとうございました。 今後のご活躍をお祈り致します。

  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.3

 何故セルを結合しているのかは存じませんが、その場合は以下の様にされると宜しいかと思います。  まず、L8セルに次の様な関数を入力して下さい。 =IF(COUNT($C8,$F8)=2,IF(AND($C8>=0,$C8<1,$F8>=0,$F8<2),IFERROR(TEXT($F8-SUM($C8,$J8)+1.000001,"h:m")+0,""),""),"") 或いは =IF(COUNT(INDEX($C:$C,ROW()),INDEX($F:$F,ROW()))=2,IF(AND(INDEX($C:$C,ROW())>=0,INDEX($C:$C,ROW())<1,INDEX($F:$F,ROW())>=0,INDEX($F:$F,ROW())<2),IFERROR(TEXT(INDEX($F:$F,ROW())-SUM(INDEX($C:$C,ROW()),INDEX($J:$J,ROW()))+1.000001,"h:m")+0,""),""),"")  次に、H8セルに次の様な関数を入力して下さい。 =IF(ISNUMBER($L8),MIN($L8,"8:0"+0),"") 或いは =IF(ISNUMBER(INDEX($L:$L,ROW())),MIN(INDEX($L:$L,ROW()),"8:0"+0),"")  次に、H8:I8のセル範囲をコピーしてH9:I9以下に貼り付けて下さい。  次に、N8セルに次の様な関数を入力して下さい。 =IF(ISNUMBER($H8),TEXT($L8-$H8+0.000001,"h:m")+0,"") 或いは =IF(ISNUMBER(INDEX($H:$H,ROW())),TEXT(INDEX($L:$L,ROW())-INDEX($H:$H,ROW())+0.000001,"h:m")+0,"")  次に、L8:O8のセル範囲をコピーしてL9:O9以下に貼り付けて下さい。  以上です。  尚、式の中でINDEX(を使っている方の関数はどの行に入力しても構わないのですが、INDEX(を使っていない方の関数は必ず8行目のセルに入力する様にして下さい。

kakitaka0331
質問者

お礼

昨日に引き続き、丁寧な説明・関数を記入して頂き本当にありがとうございました。 これから時間をかけて作業を実施しようと考えておりますので、少し時間をください。 また、大変に失礼かと思いますが貴方様のご指導のあとに msMike 様よりの説明がありましたので、実施してみましたら######が消えて、求める数値が出て、リンク先に連動しましたので、当面はこれにて実施して見ようと考えております。 後程、時間をかけて貴方様の関数を入力して実施してみたいと考えております。 本当に昨日・本日と貴重な時間を頂戴し、ありがとうございました。 今後益々のご活躍をお祈り致します。 一層の向寒の折りお身体にはくれぐれも注意をされて下さい。

  • m_and_dmp
  • ベストアンサー率54% (987/1817)
回答No.2

前回の続きですね? ######## と表示されているセルの書式を「標準」に設定して、どのような値が表示されているか確認してください。マイナスになっていませんか? まずはそこからです。 前回もそのように申し上げましたが、やっていませんね? それをやってみたくないということでしたら、 ######## に記述されている数式を次のように変更してください。 =ABS(xxxxxxxxxxxx) xxxxxxxx は、もともと######## のセルにに記述されている数式です。

kakitaka0331
質問者

お礼

昨日・本日とご指導を頂きありがとうございました。 昨日・本日のご指導のとおり時間をかけて実施して見ようと考えております。 また、大変に失礼かと思いますが、msMike 様の方法で実施して見ましたら、######が消え数値も間違いなく、必要箇所にリンクし求めている数値が求められましたので、後日貴方様の方法で実施して見たいと考えております。 本当に昨日・本日とご教授いただきありがとうございました。 今後益々のご活躍をお祈り致します。

  • aokii
  • ベストアンサー率23% (5210/22062)
回答No.1

セル幅を大きくしてみてください。

kakitaka0331
質問者

お礼

ご指導ありがとうございました。 セル幅を広くする件では解決しない問題ですので、ありがとうございました。