勤務表の計算式で困っています

このQ&Aのポイント
  • 勤務表の計算式について説明しています。特定のセルの計算式がエラーになる場合があり、改善策を求めています。
  • 勤務表の計算式でエラーが発生し、数字だけが表示される問題について質問しています。手作業で式を修正しているが、改善策を知りたいとしています。
  • 勤務表の計算式でエラーが発生し、特定のセルに数字だけが表示される問題があります。エラーの原因や改善策についてアドバイスを求めています。
回答を見る
  • ベストアンサー

勤務表の計算式で困っています

勤務表で A列に日付 B列に曜日 ---------- Xさん C列 出勤は◎ 休みは空欄 D列 D1=IF(C1=0,"",COUNTIF(C1,"◎")+COUNTIF(E1,"◎")+COUNTIF(G1,"◎") ---------- Yさん E列 出勤は◎ 休みは空欄  F列 F1=IF(E1=0,"",COUNTIF(C1,"◎")+COUNTIF(E1,"◎")+COUNTIF(G1,"◎") ---------- Zさん G列 出勤は◎ 休みは空欄 H列 H1=IF(G1=0,"",COUNTIF(C1,"◎")+COUNTIF(E1,"◎")+COUNTIF(G1,"◎") ---------- といった表での計算式につきまして 日付行の例えば1日(A1行)の出勤が 3名出勤の場合 C1◎E1◎G1◎となり D1F1H1にはそれぞれ「3」と出力 2日(A2行)の出勤が Xさん1名の場合 C2◎ 、E2と G2 は空白となり D2には「1」と出力 F2H2は空白 とさせる場合 D1セルの計算式を =IF(C1=0,"",COUNTIF(C1,"◎")+COUNTIF(E1,"◎")+COUNTIF(G1,"◎") としていますが計算式エラーとなり数字だけ残って表示されてしまう場合があります その場合には下記の式に書き換えると表示が消えることもあるのですが =IF(C1="","",COUNTIF(C1,"◎")+COUNTIF(E1,"◎")+COUNTIF(G1,"◎") 毎回手作業でエラーを見つけて式を入れなおしています 計算式が違うのか根本が間違っているのか改善策をご教授ください ◎自体は別シートの方から参照コピーしております

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

たとえ見かけは空白のような表示になっていても、空文字列(長さゼロの文字列)など何かが入力されていると、「C1=0」の条件に該当しません。 例えばあるワークシートの A1 セルが未入力のとき、B1 に「=if(a1=0,1,0)」と入力すると、B1 に「1」が返されます。未入力はゼロと同じに扱われるからです。しかし、続けて A1 に「=""」と入力すると、B1 は「0」となります。 そのような可能性があるときは、質問者さんが実行されているように、始めから「C1=""」と記述しておきます。この指定なら、「空文字列もゼロも両方該当する」ことになっています。あるいは、「C1<>"◎"」という条件も考えられますね。 C 列には空文字列を発生させない数式を入力するという方法もあります。「0」という数のときだけ非表示にするユーザー定義書式というのもあります。 空文字列は、値複写して数式を除去したとしても、クリア(Delete キー)かセルの削除か置換をしない限り、セルの中に残ってしまいます。空文字列が入力されていることは、「Ctrl+↑、↓、←、→」とか「Ctrl+End」などのショートカットキーを使ったときなどによく気付きます。その位置で高速移動するカーソルが引っかかるので。

100POINT
質問者

お礼

ご回答ありがとうございました 「C1<>"◎"」で無事問題解決しすっきりしました 空文字列(長さゼロの文字列)という概念をまったく知りませんでしたので なぜそういった結果になってしまうのか不思議で困っていました 本当に助かりました、ありがとうございました。

その他の回答 (2)

回答No.3

No.2 です。ごめんなさい。No.2 の記述に一部、誤りがありました。次のとお り訂正させていただきます。 × ……始めから「C1=""」と記述しておきます。この指定なら、「空文字列もゼ ロも両方該当する」ことになっています。 ↓ ○ ……始めから「C1=""」と記述しておきます。この指定なら、「空文字列も空 白(未入力)も両方該当する」ことになっています。

100POINT
質問者

お礼

ご丁寧に訂正いただきありがとうございます 「C1=""」や「C1=0」で消えたり表示されたりといったことが不思議で理解できませんでしたが、教えていただきました「C1<>"◎"」という式で今回の謎が解けました。 質問の仕方もうまくできませんのに、ご親切にご回答いただき、また新たに訂正までしていただきこの件もまったく分かりませんでした。 どなたか別の方へも参考にもなることと存じます。 今回は本当に助かりました。ありがとうございました。

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.1

こんばんは! 項目行はなく、1行目からデータがあるわけですね? C・E・G列には 「◎」もしくは空白のどちらかだとして・・・ まずD1セルに =IF(C1="","",COUNTA($C1,$E1,$G1)) という数式を入れてみてください、 次に各列「◎」が入っていない状態で C1・D1セルを範囲指定 → D1セルにフィルハンドルで列方向へ2列ずつオートフィルでコピー! そのまま(すべての列を範囲指定したまま) H1セルのフィルハンドルで下へ月末行までオートフィルでコピー! これで何とかご希望に近い形にならないでしょうか?m(_ _)m

関連するQ&A

  • エクセル2003で勤務時間計算をしたいのですが、

    エクセル2003で勤務時間計算をしたいのですが、 現状は下記のように、H列の計算式が30分単位なのですが、 5分単位で給与計算して、小数点以下を切り捨てするには、 H列の計算式のどこを訂正するとよろしいでしょうか? ■現状(時給880円の場合) C列     D列     E列     F列     H列 始業時刻  終業時刻  休憩時間  実働時間  日給 10:00    17:30     0:45    6:45     5720円 H列の計算式 =IF(OR(C9="",D9=""),"",G9*HOUR(F9)+IF(AND(MINUTE(F9)>=0,MINUTE(F9)<=29),0,IF(AND(MINUTE(F9)>29,MINUTE(F9)<=59),G9/2,G9)))

  • 【関数】エクセルでの時間の計算

    いつもお世話になっております。 エクセルでの時間の計算に関する質問です。 下記のような30行ぐらいの表があり、A,B,C,D列は手打ち、E,F,G列は関数が入力されています。 この場合D2は空白ですが、両方に15ずつ入力されている場合もあります。  A  B  C D    E     F        G 8:00 8:30 30 _ =(B2-A2)*24 =(C2+D2)/60 =IF(E2=F2,"〇","×") 結果、判定をしたいG列が〇になったり×になったりしますが、それがなぜなのか教えてください。

  • エクセルで空欄時に計算しない方法は

    皆様こんにちわ エクセルで次のようにして勤務時間を計算しているのですが D列(勤務開始時間)E列(勤務終了時間)F列(実働時間)G列(早出残業時間) 現在G列には次の数式が入っています =IF( MIN( "8:00",E2)>MAX( "4:00",D2),(MIN( "8:00",E2)-MAX( "4:00",D2)),0) +IF((MIN("22:00",E2)>MAX("18:00",D2)),(MIN("22:00",E2)-MAX("18:00",D2)),0) この数式ですとD・E列が空欄の場合G列に8:00が表示されてしまいます。 D・E列が空欄の場合G列に計算をさせない(もしくは0:00と計算)させるには どうすればよいでしょうか

  • エクセル・計算式のコピーについて

     A     B      C D E F G 1 3213    3213 2 4566    4566 3       4566 4       4566 5 1234   1234 上記のようにA列に数字が入っていますがところどころ空欄があります。 B列に=IF(A2="",B1,A2)という式を入れて下までコピーし 空欄を全部穴埋めしたいですが 計算式を下までコピーするとき空欄があるのでダブルクリックしても 空欄の前で計算式のコピーがとまってしまいます。 A列の一番下までポインタをもっていってコピーしてるのですが 行が多く時間がかかります。 空欄があっても、もっと手軽にコピーできる方法はないでしょうか? ご存知の方宜しくお願いします。

  • 勤務表で

    IF関数を使い =IF(D24="a","0",IF(D24="b","0",IF(D24="c","0",IF(D24="d","8",IF(D24="e","11",IF(D24="f","7",IF(D24="g","6",IF(D24="h","8",IF(D24="i","8","10"))))))))) と入力したいのですが、 『入力した数式は正しくありません』と出ます。 正しく出す方法を教えて下さい。

  • 期間内での重複の確認

    いつもお世話なります。 WINDOWS7 EXCELL2010です。 下図を参考に A列 ユーザ定義 mm/dd B列 ユーザ定義 mm/dd 各列の数式は E2 =A2&C2&D2 F2 =B2&C2&D2 G2 =IF(D2="","",IF(COUNTIF($E$2:E2,E2)>1,"重複","")) H2 =IF(D2="","",IF(COUNTIF($F$2:F2,F2)>1,"重複","")) I2 =IF(D2="","",IF(COUNTIF($E$2:F2,E2)>1,"重複","")) 条件付書式 範囲はA2:B10 =$I2=”重複” 紫 =$G2=”重複” 薄青 =$H2=”重複” 薄ピンク という具合に「入所(A列)、退所(B列)」日での重複はセルの色で確認できますが 6の行は「入所、出所」日は対象にはなりません。 重複のチェックから漏れます。 この期間内の重複を防止したいのですが何かいい方法をご教示いただけませんでしょうか。 よろしくお願いします。

  • Excel計算式 条件によって計算範囲を変えたい

      A     B    C     D    E     F    G    H   ・・・  1 日    月    火    水    木    金    土    日   ・・・ 2 100              500         200         100  ・・・ 3 2000  5000   6000  7000   4000  3000   5000  3000 ・・・ 4 上記の表において、4行目に下記の計算をしたいです。 どのような計算式を組めば可能でしょうか? ・1行目が”日”または”月”→(3行目の数値)-(4列前までの2行目の合計) 例)H4=3000-(500+200+100)=2200 ・1行目が”日””月”以外→(3行目の数値)-(3列前までの2行目の合計) 例)G4=5000-(500+200)=4300 OR、IFなど組み合わせてみましたがうまくいきません。 回答よろしくお願いいたします。

  • エクセル:複数セルからの参照

    お世話になります。 A,B,C列にデータが入っています。 D,E,F列に参照のためのデータがあります。 A,B,C列はそれぞれD,E,F列に対応しています。 A,B,C列と同じ並びのデータが入っている行をD,E,F列から探し、その隣のG列の値をH列に返す。 D,E,F列の並びが重複する行はありません。 A,D列は場所の名前、B,C,E,F列には数字が入っている。 例) A1に事務室 B1に20 C1に3 が入っているとする。 D/E/F列が 事務室/20/3 の並びになっているのが10行目の場合、H1にG10のセルの値を返す。 この場合、H列にはどんな計算式を入れておけばよいのでしょうか? A,B,C列と同じ並びのデータがD,E,F列で見つからない場合は空白をH列に返す。 ちなみにD/E/F列が 事務室/20/3 の並びになっている行は10行目しかないです。 よろしくお願いします。

  • エクセルで空白せるだけ削除したい

    エクセルの操作で困っています。 どなたか、ご教授お願い致します。 例えば(4列4行のセルとお考えください)   A  空欄  F  空欄  空欄  C  空欄 空欄   B  空欄 空欄  H  空欄  D   E   G を空欄だけ削除して上に詰めて   A   C   F   H   B   D   E   G のように並び変えたいのですが良い方法はないでしょうか? 空欄を削除したい範囲は非常に広範囲で、どの列も昇順や降順で並んでいる訳ではなくランダムな文字列です。

  • EXCEL の計算式についてお教えください

    下記のようなシートに計算式入っています 条件は基本的にはC列は他の列より大きいか同じ・D列は他の列より小さいか同じ BDE列 - が入ると×になりますがC列だけ○になってしまいます 1    A     B    C    D    E 2   3月18日  4931  4939  4891  4897 3   3月20日  4938  4944  4895  4901 4   3月21日  4926  4934  4886  4891 5   3月23日  4938  -    4895  4901 G 列に =IF(AND(D2>=C2,D2>=E2,D2>=F2,E2<=F2,E2<=C2,E2<=D2),"○","×") 入れて下にコピーし計算して見ましたがうまくいきません。 どのようにすればよいのか・・・。 よろしくお願いします。

専門家に質問してみよう