• ベストアンサー

Excel2010 休日出勤を関数式で表示するには

休日に出勤した日数を下記の図のごとく計算を考えています。 (1)には別セルの年月を参照して日にちを表示しています。 (2)には別シートにある休日表を参照して、休日を表示しています。 (3)は休日に出勤した担当者名です。 (4)は休日に出勤した日数をカウントして表示させるエリアです。今、数値が入っていますが、これを関数式で表示させたいと思って、トライしていますがうまくいきません。 どなたか教えてください。

noname#194986
noname#194986

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

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

何度もお邪魔します。 エラーの件でかなり悩まれていらっしゃるようなので・・・ エラーの原因はWEEKDAY関数のシリアル値の取得部分でエラーになります。 すなわちWEEKDAY関数の範囲内すべてが数値(シリアル値)でないとエラーとなります。 その解消のために前回のような方法を提案しました。 仮に見た目は「空白」でも数式によって「空白」表示されている場合はExcel的には「空白」とは判断してくれません。 Deleteキーで完全に数式まで消した場合は「空白」=0と判断してくれますので、 エラー表示は解消されます。 しかし、月が替わるたびに数式を入れたり・消したりは大変だと思い、 とりあえずWEEKDAY関数の「土日曜」とは全く関係のない平日(月曜日)の「2」を「空白」の代わりに 表示させた数式です。 尚、前回のセルの表示形式も手を加えたくない場合は 条件付き書式で セル値が「2」に等しい → 書式 → フォントの色を「白」としてもかまいません。 余談ですが、小の月の月末セルは 「0」→Excel的には1900/1/0 → 土曜 「1」→ 1900/1/1(日曜) の数値であっても29行目以降が空白だと思いますので、 何らかの数値さえ入っていれば休日・祝日出勤とはカウントされません。 ※ 土日と祝日が重複する月もあるはずですので、前回の数式のように 土日の出勤数+平日(月~金)で祝日の出勤数 を出す計算式としています。 単に土日曜+祝日 としてしまうと重複してカウントされる月が出てきます。 以上、長々と失礼しました。m(_ _)m

noname#194986
質問者

お礼

ありがとうございました。今後もよろしくお願いします。

その他の回答 (7)

回答No.8

NO.4,5,6です NO.7さんのおっしゃる通り  土日+祭日では重なった場合二重にカウントされます。    説明が不足していましたが、  祭日一覧から「土日」の「祭日」を除いた「祭日一覧表」  を作って使用しておりました。  それを使えばご希望の計算は出来ます。  祭日一覧表はハッピーマンデー(振替休日)の関係で  毎年作りますので、その際「土日」と重複した「祭日」を除いて  作られると1年間は使えます。  25年度で4日程重なっています。  日付について  日付は31日の欄まで式を入れておきます。  大の月小の月については条件付き書式で  翌月分は非表示にします。  条件付き書式は  =MONTH(日付)<>別セルの月 設定で  フォントの色を白にします。  従って1日~31日蘭まで日付データは必ず  設定されていますので、空白欄は有りません。    11月(小の月)では日付欄「$D$26:$AH$26」の  [AH26]欄は空白かも知れませんね。  空白欄が有ればエラーの原因かもしれません。  従って大の月、小の月で数式を変えることも有りません。  毎月1つの数式で計算されます。  後は「祭日一覧表」(土日重複を除く)を年に1回更新  するだけです。

noname#194986
質問者

お礼

ありがとうございました。今後もよろしくお願いします。

noname#194986
質問者

補足

回答ありがとうございます。返事が遅れまして申し訳ありません。 図はAGで終わっていますが、表自体は大の月もあるので、AHまであります。11月は小の月なので、AGで切り取り貼り付けたので、空白列はないとお考えになられたと思います。大変申し訳ありません。その空白行が災いしているのか、AHまで式に含むとエラーになりますが、AGまでだとOKです。 また、土日と祝日の重なり考え付かなかったですが、ご指摘ありがとうございます。

回答No.6

NO.4,5です。 1.日付欄は”別セルの年月を参照して日にちを表示”  とありますので各セルには「年月日」のデータが有り「日」のみを表示  しているものとしています。 2.別シートで”休日表を参照して”と有りますので  祭日の「年月日」の一覧表が名前を定義してあるものと  しています。 3.ご質問の空白欄(ヌル)は計算には影響されません。 手元の Excel シートでは正常に計算されますので 再度上記をご確認ください。

noname#194986
質問者

お礼

ざいました。今後もよろしくお願いします。

回答No.5

NO.4です 式の記述が違っています。 >=SUMPRODUCT(((WEEKDAY(D29:AH29,2)>=6)+COUNTIF(祝日,D29:AH29))*($D29:$AH29<>"")) としていますが、 WEEKDAY 関数の引数は 「$D$26:$AH&26」の日付です。  26行目で固定します。 COUNTIF 関数も同じ 「$D$26:$AH&26」の日付です。   26行目で固定します。 調べる該当欄は 「$D29:$AH29」となります。   29行目で下にコピー出来る様に複合参照です。  26行 と 29行が違っています。

noname#194986
質問者

お礼

ざいました。今後もよろしくお願いします。

noname#194986
質問者

補足

セル番地が違っておりました。しかし、次のように入力しても#VALUE!エラーとなります。 =SUMPRODUCT(((WEEKDAY($D$26:$AH$26,2)>=6)+COUNTIF(祝日,$D$26:$AH$26))*($D29:$AH29<>"")) ($D29:$AH29<>"")ヌルではないとありますが、図のように飛び飛びにヌルの所があるのですが、関係ありますか。よろしくお願いします。

回答No.4

初めて回答します。 同じような計算(個人々の土日祭の勤務日数計算→給与計算)をしていました。 名前「日程」($D$26:$AH$26) 名前「祝日」(祝日表)を定義しておきます。 式が読み易くなると思います。 =SUMPRODUCT(((WEEKDAY(日程,2)>=6)+COUNTIF(祝日,日程))*($D29$AH29<>"")) WEEKDAY(日程,2)>=6 で土日 COUNTIF(祝日,日程)  で祝日の $D29$AH29<>""  で該当欄($D29$AH29)の空白でないセル数を数えています。 以下、下にコピーします。 OKWaveで随分教えて頂きましたので少しでもお役に立てればと思います。 この式もOKWaveをヒントに考えたものです。 シルバー世代(68歳)ですが頑張っています。

noname#194986
質問者

お礼

ありがとうございました。今後もよろしくお願いします。

noname#194986
質問者

補足

回答ありがとうございます。私も教えてもらうばかりではなく、人に教える様になりたいものです。 =SUMPRODUCT(((WEEKDAY(D29:AH29,2)>=6)+COUNTIF(祝日,D29:AH29))*($D29:$AH29<>"")) でトライしましたが、#VALUE!エラーが出ます。教えてください。

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

続けておじゃまします。 月ごとに数式を変えたくないというコトなので・・・ 苦肉の策です。 SUMPRODUCT関数で数式が入った空白セルを範囲に含んだ場合はエラーになるようなので、 小の月の月末を空白にするのではなく、数値にしてセルの表示形式の操作でフォント色を「白」にする方法です。 ※ シリアル値で0は土曜日・1は日曜日となりますので、「2」を表示させ、フォント色を「白」にする設定とします。 そこで表の式に手を加えさせていただきます。 D26セルの表示形式をユーザー定義から [白][=2]G/標準;d としておき =IF(MONTH(DATE($D$1+1988,$F$1,COLUMN(A1)))=$F$1,DATE($D$1+1988,$F$1,COLUMN(A1)),2) という数式を入力 D27セル(セルの表示形式はユーザー定義から aaa としておきます)は =IF(D26=2,"",D26) という数式を入れD26・D27セルを範囲指定 → D27セルのフィルハンドルで月末のAH列までオートフィルでコピー! D28(28行目)の数式はそのままでOKです。 これで前回の数式がそのまま利用できると思います。 C29セルに =SUMPRODUCT((WEEKDAY($D$26:$AH$26,2)>=6)*(D29:AH29<>""))+SUMPRODUCT((WEEKDAY($D$26:$AH$26,2)<6)*($D$28:$AH$28<>"")*(D29:AH29<>"")) という数式を入れオートフィルで下へコピーしてみてください。 おそらく大の月・小の月も対応できるはずです。 ※ 結局いま入っているIF関数の「空白」の場合は「2」(2以外のシリアル値が土日以外でもよい) を表示させるだけです。 お役に立ちますかね?m(_ _)m

noname#194986
質問者

お礼

ざいました。今後もよろしくお願いします。

noname#194986
質問者

補足

回答ありがとうございます。返事が遅れまして申し訳ありません。 まだ、トライしていませんが、エラーが出ないなら利用させていただきます。これからトライします。

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

No.1です! 前回の数式で間違いがありました。 列の範囲指定に空白列が入っているとエラーになってしまいますので、 お示しの画像の場合(小の月)は 数式内のAH部分をAGに変更してください。 大の月だけAHに変更する必要があります。 (2月はその年に適宜合わせてみてください) 検証せずに投稿してごめんなさいね。m(_ _)m

noname#194986
質問者

お礼

ありがとうございました。今後もよろしくお願いします。

noname#194986
質問者

補足

回答ありがとうございます。 カレンダーについては別セルを参照して大の月、小の月を自動判別して表示しております。 プログラムの知識のないオペレーターが月毎に式を「いじる」のは好ましくないのでエラーのない式ができればと思います。

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

こんばんは! 画像では30日のAG列までしかありませんが、実際は大の月の場合31日のAH列までになると思いますので、 AH列までの範囲としてみました。 小の月の場合月末列は空白にとなる前提です。 C29セルに =SUMPRODUCT((WEEKDAY($D$26:$AH$26,2)>=6)*(D29:AH29<>""))+SUMPRODUCT((WEEKDAY($D$26:$AH$26,2)<6)*($D$28:$AH$28<>"")*(D29:AH29<>"")) という数式を入れオートフィルで下へコピーではどうでしょうか?m(_ _)m

noname#194986
質問者

お礼

ありがとうございました。今後もよろしくお願いします。

noname#194986
質問者

補足

早速の回答ありがとうございます。 11月のカレンダーなので31日が抜けておりました。大の月は31日まで表示します。 さて、回答を当てはめてみましたが#VALUE!エラーが表示されうまくいきません。よろしくお願いします。

関連するQ&A

  • Excel関数で休日出勤日数を計算

    図のようなフォーマットで勤務表を作ってます。 C13セルからE15に関数を入れて、出勤者ごとに休日出勤する日数をカウントしたいです。 休出かそうでないかはB列で判断します。 B列に「休」と入っている日が休日で、休日が「休」でなかったら休日出勤です。 この例ではそれぞれ山田さんは0日、田中さんは1日、鈴木さんは3日の休日出勤があります。 C13セルからE15にどんな関数を入れたらいいでしょうか? このフォーマットはある程度変えてかまいません。 また作業用のセルもある程度使ってかまいません。 シンプルでわかりやすいやり方だとうれしいです。 よろしくお願いします。

  • 条件付き書式で反映した休日のデータを数えたい

    条件付き書式とCOUNTIF関数を使用して、休日が塗りつぶしされるように設定をしています。 その塗りつぶしされたセルのうち、「大阪」「南部」と入力された個数をカウントしたいのですが、関数のみでカウントできればいいなと思ってます。 休日は別シートの「祝日」と名前を付けた部分に登録しています。 COUNTIFで「祝日」が参照され、塗りつぶしされるまではできたのですが・・・ 添付の通りでいけば、8日と16日にそれぞれ「南部」「大阪」とあるので「休日出勤数」をカウントして「2」と。 休日ではない土曜日において「休」とある1日と15日を「出土休み日数」をカウントして「2」と。 塗りつぶしが流動的なので、フィルターを使用するのかなんなのか、さっぱりわかりません。 関数のみで対応できればいいなと思っています。 どなたか、教えてください。

  • 【Excel2010】出勤日のみ表示したい

    勤務時間管理表にて、現状、土日はweekday関数で翌出勤日が表示されるようにしてありますが、平日の祝日はそのセルに日付を手入力しています。祝日のある月はその作業が面倒でどうにかならないかと常々思っております。 休日&振替日一覧は作成してありますので、条件付き書式で土曜日は青文字、日曜日と休日は赤文字になるよう設定して会社休日が紛れ込んでいないか確認できるようにしてあります。 この一覧表を利用して出勤日のみを表示させる関数はありませんか?

  • Excel2000の関数式をご教示下さい。

    初心者です。よろしくお願いします。 具体的に、以下のような結果のデータがあります。 A B C D E F G 1 日付 曜日 休日 出勤 退勤 時間1 時間2 2 2/2 月 1 08:00 17:00 8.00 0.00 3 2/3 火 1 08:00 18:45 8.00 1.75 4 2/4 水 0 00:00 00:00 0.00 0.00 5 2/5 木 1 10:00 19:00 8.00 0.00 6 2/6 金 1 10:30 20:00 8.00 0.50 7 2/7 土 1 10:00 15:00 4.00 0.00 . . 以下の様な条件でF列とG列に労働時間を求める関数をご教示下さい。(VBAでもよいですが、不慣れです) ・休日表示(C列) 0=休日,1=稼働日 数値表示 ・出勤時間(D列) 時刻表示 ・退勤時間(E列) 時刻表示  ・時間1(F列) 1日の労働時間が8hrに達するまでは、ここに時間を求める。(例:1時間45分の場合は1.75と数値表示) ・時間2(F列) 1日の労働時間が8hrを超えた場合は、ここに時間を求める。(例:1時間30分の場合は1.50と数値表示) ・12:00~13:00までは休憩の為、カウントしない 以上よろしくお願い致します。

  • セルに計算結果でなく、関数式が表示される

    エクセルの関数が入っているセルに、昨日から関数式自体が表示されるようになり、計算結果がでてきません。上部のバーにある「関数の引数」ウィザードボタンfxをクリックすると、ウィンドウには計算数値が表示されています。ちなみに関数は単純に別シートのセルを参照させて足し算するだけです。別なシートに、関数式をコピーしてみましたが、ひとつのセルはできても、次のセルに連動させようとすると(セル右下に表示される太十字をひっぱっる)また、結果でなく、関数式が表示されるようになってしまいます。どうしたら解決できるでしょうか?

  • 休日出勤手当

    すいません教えてください。 人事をやっているものです。休日出勤手当にかんする質問です。 当社は、日給月給をしいています。 賃金規定には、基本日数は22日としています。 <例> 実際の稼働日数はカレンダー上20日ですが、休日出勤を2日した場合はどうなるのでしょうか? 基本の22日から考えると休日出勤はしていないと考えられるのか? もしくは別モノと考え 基本給+休出2日としなければいけないのでしょうか? よろしくおねがいします。  

  • エクセル2003で休日のセルに自動で0と表示させて1ヶ月出勤日数を集計

    エクセル2003で休日のセルに自動で0と表示させて1ヶ月出勤日数を集計させたい。 出勤簿を作っています。 入力規制(リストより選んで入力)の方法使って数式で集計しない方法はありますか?  項目名 記号   出  ○   欠  ×   休日  | 1日(B1)のセルを翌月にすると自動で日にち、月(A1)、曜日(B2)が変わることは出来たのですが、 休日(土日)のセルは自動で「0」(C3)となり、日計、月計を出したいです。 (1)自動で「0」となり集計出来る数式を教えて下さると助かります。 (2)休日(土日)の列に色を付けたいのですが、 これを含むと自動で「0」となる数式は変わってきますか? 2点質問します。 どうぞよろしくお願いします。

  • 出勤日数を数える関数を教えてください

    セルB1~B30 に↓関数を入れ、平日の始業時間に8:00が入るようにし、土日祝には時間が入らないようにしてあります。 関数:=IF(OR(WEEKDAY(A35,3)>=5,NOT(ISERROR(MATCH(A35祝日,0))))=TRUE,"","8:00") セルB32 に有給日数を手入力し、セルB31 に実際に稼動した日数を入れるようにしたく、 下記の関数を入力したところできませんでした。。 関数:=COUNTIF(B1:B30,">""0")-B32 他にどのような関数でしたら、きちんと稼動日数をカウントできるでしょうか?

  • Excel2010 出勤簿の曜日自動入力について

    Excelで前月21日~当月20日までの出勤簿を作っています。 曜日の自動入力についてご教授をお願いいたします。 A1セルに年、A3セルに月の数値を入力します。 A8セルからA18セルまで21から31の数値(日にち)を、A19セルからA38セルまで1から20の数値(日にち)を予め入力してます。 上記の条件で B8セルからB18セルに、A1に入力した年とA3に入力した”前月”の21日~31日までの曜日を、 B19セルからB38セルに、A1に入力した年とA3に入力した”当月”の1日~20日までの曜日を表示する関数を教えていただきたくよろしくお願いいたします。 *A3セルが1(1月)の場合、B8セルからB18セルには昨年の12月の曜日が表示となります。 何卒よろしくお願いいたします。

  • EXCELで休日出勤を計算する

    お世話になります。 知恵をお貸しいただければ幸いです。 EXCELでひと月ごとのの出勤報告書を作っています。 そこで、休日(土、日、祝)出勤手当てを支払われる日が何日あるかを自動表示させようとしています。 今のシートの構成は A列:日付(2008/9/1の形で入力し、「1」のように表示 A5:A35) B列:曜日(A列から参照し、表示形式でaaaとし「月」のように表示) C列:休日(仕方なく手入力で「休」と入れている) D列:休日出勤したか判定(=IF(OR((C5>0)*(E5>0)),"休出","")C列とE列とも入力された場合に休日出勤とし「休出」と表示) E列:出勤した日はその日の仕事内容を入力 D列の最下部で「休出」が何回あるかカウント(=COUNTIF(D5:D35,"休出")) 祝日は関数が無いので、祝日一覧を作り該当する日付から祝日を割り出すのは分かったのですが。 =IF(WEEKDAY(A5)=1,"休","")&IF(WEEKDAY(A5)=7,"休","") よろしくお願いします。

専門家に質問してみよう