http://q.hatena.ne.jp/1229411743


ずいぶん前に、上記URLのような質問をしたのですが、IF関数を教えてください。

A列…社員No
B列…社員名
中略
G列…退職年月日
H列…長期休暇
I列…復帰日
中略
O~T列…7月~12月の残業時間
U列…O~T列の合計
V列…U列の平均時間
とします。(大雑把ですみません)

例えばG3の行へ入れるものとして
V列の式に
1、G3に日付が入った時は空欄、
2、H3に日付が入っていてI3が今日より大きい日付か「-」が入っていたら0
1と2のどれにも該当しなかったら平均を出す。
としたいんですね。
なので
=IF($G3<>"","",IF(OR($H3<>"",$I3>TODAY(),&I3="-"),0,AVERAGE($O3:$T3)))

という式を作ったのですが、何故か上手く平均値が出てきてくれません。
どこか式を間違っているとは思うのですが。。。
正しい式を教えてください。

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2009/04/13 11:49:18
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:Gay_Yahng No.3

回答回数724ベストアンサー獲得回数26

ポイント25pt

それでは合計が0だったら、平均値を計算せずに0にして、

=IF($G3<>"","",IF(AND($H3<>"",OR($I3>TODAY(),$I3="-")),0,IF(U3=0,0,AVERAGE($O3:$T3))))

で、どうでしょう?

id:kanachan

あ、なるほどです!

それならずーっと残業がなく「0」の人は間違いなく平均も「0」だからエラーも出ませんよね。

納得しました。

ありがとうございます。

2009/04/13 11:48:22

その他の回答2件)

id:Mook No.1

回答回数1314ベストアンサー獲得回数393

ポイント35pt

下記の式は条件の修正が必要そうです。

>H3に日付が入っていてI3が今日より大きい日付か「-」が入っていたら

は下記のようになります。

AND($H3<>"",OR($I3>TODAY(),&I3="-"))

ですから、全体としては

=IF($G3<>"","",IF(AND($H3<>"",OR($I3>TODAY(),&I3="-")),0,AVERAGE($O3:$T3)))

のようになるかと思います。

うまくいかないときは、コメントにて対応します。

id:kanachan

ありがとうございます。

何となく意味が解ったのですが、「-」を表すために使用している「&」が数式エラーになって出てしまいます。

2009/04/13 11:19:28
id:Gay_Yahng No.2

回答回数724ベストアンサー獲得回数26

ポイント20pt

一応これでいいと思います。

=IF($G3<>"","",IF(AND($H3<>"",OR($I3>TODAY(),$I3="-")),0,AVERAGE($O3:$T3)))

id:kanachan

あ、出来ました。

&は要らなかったんですね。ありがとうございます。

ただ、O列~T列が空欄だとaverageのエラー?

DIV/0!が出てきてしまって…

o列~T列まで全部空欄でも一部空欄でもエラーがなくなると非常にうれしいんですが…

厳しいでしょうか?

2009/04/13 11:29:42
id:Gay_Yahng No.3

回答回数724ベストアンサー獲得回数26ここでベストアンサー

ポイント25pt

それでは合計が0だったら、平均値を計算せずに0にして、

=IF($G3<>"","",IF(AND($H3<>"",OR($I3>TODAY(),$I3="-")),0,IF(U3=0,0,AVERAGE($O3:$T3))))

で、どうでしょう?

id:kanachan

あ、なるほどです!

それならずーっと残業がなく「0」の人は間違いなく平均も「0」だからエラーも出ませんよね。

納得しました。

ありがとうございます。

2009/04/13 11:48:22
  • id:Gay_Yahng
    あ、失礼。遅かった。
  • id:Mook
    いえいえ、「&」気がつかずにコピー&ペーストしてたので、Gay_Yahngさんの回答があって
    kanachan さんは助かったかと思います。

    すでに回答されているかと思いますが、AVERAGE($O3:$T3) の部分を
      IF(COUNTA($O3:$T3)>0,AVERAGE($O3:$T3),"")
    のように差し替えればよいですね。
  • id:Mook
    一部空欄だったら AVERAGE は結果をちゃんと出します。
    データが全然ないときにエラーになりますが、その時は 「空欄」より 「0」 がよいのですか?

    =IF($G3<>"","",IF(AND($H3<>"",OR($I3>TODAY(),$I3="-")),0,IF(COUNTA($O3:$T3)>0,AVERAGE($O3:$T3),"")))

    =IF($G3<>"","",IF(AND($H3<>"",OR($I3>TODAY(),$I3="-")),0,IF(COUNTA($O3:$T3)>0,AVERAGE($O3:$T3),0)))

    でいけると思いますが。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません