質問: エクセル 平日と土日祝の時間計算表示 下記のようなエクセルを作りたいのですが、 祝日の7月15日の土日祝残業が、平日の方に表示されてしまいます。 休日表は、別シートでseet2のb2~e21に作成しています。 aセルに、日付 bセルに、始業時間 cセルに、終業時間 dセルに、休憩時間として、 eセルに、実労時間 =c2-b2-d2 fセルに、平日労働時間 =if(or(weekday(a2,2)>5,countif(sheet2!b$2:e$21,a2)),"",(e2)) gセルに、土日祝労働時間 =if((f2<>""),"",(e2)) hセルに、平日残業時間 =if(or(weekday(a2,2)>5,countif(sheet2!$b$2:$e$2,a2)),"",(e2-time(8,0,0))) iセルに、土日祝残業時間 =if(or(weekday(a2,2)<6,countif(sheet2!$b$2:$e$2,a2)),"",(e2-time(8,0,0))) を入れてみたのですが・・・ 祝日の残業時間のところがうまく表示されません。 (weekday(a2,2)<6 から countif(sheet2!$b$2:$e$2,a2) 除いた日を""にすれば よいのかなぁと試行錯誤しましたがうまくできませんでした。 そのような式を教えて頂けますか? もしくは他に適切な式があったら教えてください。 宜しくお願い申し上げます。
回答: こんばんは! 前回 http://okwave.jp/qa/q8241711.html で回答した者です。 sheet2の祝日データは前回同様の配置とします。 d列の「休憩時間」がない場合は空白のままではなく、「0」を入力してください。 そうしたうえでの一例です。 まずd~i列すべてを範囲指定 → 右クリック → セルの書式設定 → 表示形式 → ユーザー定義から g/標準 となっていればそれを消して [h]:mm としておきます。 e2セルに =if(countblank(b2:d2),"",c2-b2-d2) (意味:b~d列に一つでも空白セルがあれば空白に、そうでない場合は 終業時刻-始業時刻-休憩時間) f2セルに =if(or(e2="",weekday(a2,2)>5,countif(sheet2!b$2:e$21,a2)),"",e2) (意味:e列が空白またはa列日付が土・日曜またはa列が祝日の場合は空白に、そうでない場合は実労時間を!) g2セルに =if(or(e2="",f2<>""),"",e2) (意味:e列が空白またはf列にデータが表示されている場合は空白に、そうでない場合は実労時間を!) h2セルに =if(and(f2<>"",f2>"8:00"*1),f2-"8:00","") (意味:f列にデータが表示されている、なおかつf列時間が8時間より大きい場合はf列から8時間マイナスした時間を!、 そうでない場合は空白に!) これを右へ1列オートフィルでコピーしているので相対参照で1列ずれるのがi列の数式になります。 という数式を入れ隣のi2セルまでコピー! 最後にe2~i2セルを範囲指定 → i2セルのフィルハンドルで下へコピー! これで何とかお望み通りにならないでしょうか?m(_ _)m