プロが教えるわが家の防犯対策術!

セル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

他にどのような関数でしたら、きちんと稼動日数をカウントできるでしょうか?

A 回答 (4件)

関数:=COUNTIF(B1:B30,">""0")-B32



関数:=COUNTIF(B1:B30,">0")-B32
でダメでしょうか。

この回答への補足

ダメでした。日数0ゼロになってしまいました。

また、遅刻で10:00に出社した場合、
関数:=IF(OR(WEEKDAY(A35,3)>=5,NOT(ISERROR(MATCH(A35祝日,0))))=TRUE,"","8:00")を消し手入力で10:00と入力しています。
関係ありますか?

補足日時:2008/11/27 22:15
    • good
    • 0

こんにちは


>関数:=IF(OR(WEEKDAY(A35,3)>=5,NOT(ISERROR(MATCH(A35祝日,0))))=TRUE,"","8:00")

この式のMATCH(A35祝日,0)って間違ってませんか?
→ MATCH(A35,祝日,0)← A35が検索値で祝日が検索範囲、間にカンマ
がないのでFALSEになる。
(カンマがなくてもMATCH(A35祝日,0)が、#NAMEになるので、FALSEに
 なり、見た目わかりません)

祝日というのは名前定義した範囲なのだと思いますが、範囲の内容が
わかりませんので何とも言えません。
この辺を一回見直したほうがよいと思いますが。

ご参考まで
    • good
    • 0

数値と文字列を同列に扱う必要があるようですね



関数で "8:00" と表示されているのは 時間を示すシリアル値(数値)ではなく文字列です
対して その関数を消して入力した "10:00" は時間を示すシリアル値(数値)です

ですので思い切って

 =COUNTA(B1:B30)-COUNTBLANK(B1:B30)-B32

等としてはいかがでしょう

あるいは
 =IF(OR(WEEKDAY(A35,3)>=5,NOT(ISERROR(MATCH(A35,祝日,0))))=TRUE,"","8:00")
この最後の "8:00" を TIMEVALUE("8:00") としてシリアル値にしてしまえば
 B31=COUNTIF(B1:B30,">0")-B32
で計算させることができると思います
(COUNTIF関数の条件を ">""0" とするのは文字列を対象としたカウントになります)
※ MATCH関数内の検査範囲を示す「祝日」の直前にカンマが抜けていますよ
    • good
    • 0

こんにちは 再びANo.2です。


列が挿入できないとかあるかもしれませんが、私なら

A列にA1~A31まで行方向に日付を入力
C列にA列の日付が祝日の場合、祝日と事前に手入力
(有給の場合は有給と入力)しておいて、

B列に
=IF(OR(WEEKDAY(A3,3)>=5,C3="祝日",C3="有給"),"","8:00")

B32に稼動日数
=COUNTIF(B1:B30,">""0")
B33に有給数
=COUNTIF(C1:C31,"有給")

とかしちゃいますが、どうでしょうか?

11月の祝日が2日、有給を1日として
稼動日数17とでましたが・・

希望の内容とは違うかも知れませんがご参考まで
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!