
お世話になります。
知恵をお貸しいただければ幸いです。
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,"休","")
よろしくお願いします。
No.2ベストアンサー
- 回答日時:
土、日、祝日のサインを立てる列を1列にして、列のサインが立っている件数をカウントすれば(1という数値なら合計する)仕舞い。
ーー
>=IF(WEEKDAY(A5)=1,"休","")&IF(WEEKDAY(A5)=7,"休","")
でチョチョ切れているのでは。何を言いたいのかな。
ーー
下記のようなことをしたいのかな。
例データ
A列 B列 C列
2008/9/1月
2008/9/2火
2008/9/3水
2008/9/4木
2008/9/5金
2008/9/6土1
2008/9/7日1
2008/9/8月
2008/9/9火
2008/9/10水
2008/9/11木
2008/9/12金
2008/9/13土1
2008/9/14日1
2008/9/15月1
・・・(以下略)
A列 今年9月の日付
B列 A列のコピー、書式ーユーザー定義のaaa
C2の式
=IF(OR(WEEKDAY(A2)=1,WEEKDAY(A2)=7,NOT(ISERROR(VLOOKUP(A2,$G$1:$G$10,1,FALSE)))),1,"")
これを下方向に式を複写。
結果
上記C列。
ただし上の式では、G列に
9月の祝日(特別に会社休業日もあれば入れてよい)である
2008/9/15
2008/9/23
を入れておく。
ちなみに上記結果C列は9月15日は1になっている。
NOT(ISERROR(VLOOKUP(A2,$G$1:$G$10,1,FALSE)))はG列のリストにある日付かどうかを判別しているもの。
ーーー
出勤日とこのC列が同時に1であれば休日出勤日数がわかる。
D列に出勤日は1が入るとして
=SUMPRODUCT((C2:C31=1)*(D2:D31=1))
で休日出勤日数がでる。
この回答への補足
imogasiさんの
=IF(OR(WEEKDAY(A2)=1,WEEKDAY(A2)=7,NOT(ISERROR(VLOOKUP(A2,$G$1:$G$10,1,FALSE)))),1,"")
という式と
=IF((C5=1)*(E5>0),"休出","")
で、
休日出勤した日には、D列に「休出」と表示させカウントさせることができました。
回答してくださった皆さんありがとうございました。
回答ありがとうございます。
休日の判定はうまくいきました。
そこまではうまくいくのですが、休日であり出勤した日を出すのがやはりうまくいきませんでした。
休日と判定され、1と表示されている行に出勤の1を入力しても0と表示されました。
ここが今回の質問の困っているところです。
良い方法がありましたらお願いします。
ちなみに出勤したかどうかのE列には文字列が入ります。
よろしくお願いします。
No.4
- 回答日時:
#2です。
回答をよく読んでくれてないのでは。
私は
>D列に出勤日は1が入るとして
質問者は
>文字列が入ります
であれば
=SUMPRODUCT((C2:C31=1)*(D2:D31=1))
の式のD2:D31=1
の式のD2:D31=1のD列をE列、1を文字列(””つき)に修正しないと。
それぐらい質問者は判ると思って。
こういうとき文字列と「一般化」した書き方をしないで、「出勤」とか具体的に書くと、回答が具体的になるよ。
補足をありがとうございます。
先ほどの回答の意味は理解して試しました。
1を入れた場合ということでしたので 試しにD列に1を入れてやってみましたが、うまくカウントされませんでした。
さきほどの"ちなみに"というのは実際使用する際にはこうしたいという意味でした。
説明不足ですみませんでした。
E列には、出勤した日の仕事内容を入力するので、日によって入力される内容が異なるわけです。
出勤していない日は、セルは空白です。
なので、出勤したかどうかは「E5>0」E列のセルが空白でない時で分かると思うのですが
なにか良い案がありましたら、教えてください。
No.3
- 回答日時:
D列で休日出勤の判定が出来ていて(or関数は無駄だけど)、カウント
もしているようなので、目的の「出勤手当てを支払われる日が何日
あるか」は達成しているわけです。すると質問は、C列を手入力した
くないってことでしょうか。
weekday関数は第二引数を2にすることで月曜が1になります。よって
土日の判定は=if(weekday(A5,2)>=6,"休","")ですみます。そこに祝
日一覧のチェックを加えればいいわけで、たとえば「祝日一覧」
シートのA列に今年の祝日や来年の祝日が列記してあるとして、A5が
祝日じゃない場合はvlookup関数で検索に失敗して#value!エラーが
返ることを利用して、
=if(or(not(iserror(vlookup(A5,祝日一覧!A:A,FALSE))),weekday(A5,2)>=6),"休","")
みたいな感じでやれるんじゃないでしょうか。振替休日は祝日一覧
の方で対応して下さいね。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
9月17日でサービス終了らし...
-
エクセル ドロップダウンリスト...
-
特定のセルだけ結果がおかしい...
-
エクセル
-
エクセルのdatedif関数を使って...
-
【マクロ】アクティブセルの時...
-
【関数】同じ関数なのに、エラ...
-
エクセルの循環参照、?
-
【マクロ】WEBシステムから保存...
-
iPhoneのExcelアプリで、別のシ...
-
【マクロ】3行に上から下に並...
-
【マクロ】A列にある、日付(本...
-
【条件付き書式】シートの中で...
-
【マクロ】EXCELで読込したCSV...
-
【エクセル】期限アラートについて
-
【マクロ】列を折りたたみ非表...
-
Excelファイルを開くと私だけVA...
-
Excelの新しい空白のブックを開...
-
マクロ・VBAで、当該ファイルの...
-
派遣会社とかハローワークとか...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelファイルを開くと私だけVA...
-
エクセルについてどう関数を使...
-
マクロ・VBAで、当該ファイルの...
-
エクセルのセルに画像は埋め込...
-
エクセルで、一部のセルだけ固...
-
【マクロ、画像あり】A表かB表...
-
エクセルでカウントする
-
【マクロ】コードを少しでも、...
-
VBA_日時のソート
-
エクセルで教えてください。 例...
-
エクセル 月間シフト表で曜日ご...
-
セルの左に余白を付ける
-
エクセル
-
エクセルについて教えてください
-
2枚のエクセル表で数字をマッチ...
-
ExcelのIF関数との組み合わせの...
-
エクセルのファイルのコピーを...
-
エクセルで二つのブックの違い...
-
空白処理を空白に
-
Excelのチェックボックスについ...
おすすめ情報