• ベストアンサー

エクセルの関数

=COUNTIFS(A10:A47,"一日有休",B10:B47,">=" & DATE(YEAR(E11)-1,MONTH(E11),DAY(E11)),B10:B47,"<" & E11) 上記の数式をJ11に入力してますが動きません。 (A10:A47)には一日有休などの文字が(B10:B47)には有給取得日が E11には有給付与日が2010/10/1等 結果が0になります。 どこが、がいけないのでしょうか

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

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.1

B列の日付が所定の計算範囲に入っていないなど、単純に与えたサンプル値が間違っているだけでは。 今ヤリタイ事(?): 指定の文字列("一日有休")であって、指定日(付与日)より「1年前から前日まで」の日数 出来ない例: ●実際のB列が付与日「以降」の日付が入っている ●A列に間違った文字列が記入されている  たとえば「一日有休□」(□はスペース)など

yomogi111
質問者

お礼

ありがとうございます。よく見直したら 単純なミスがありました。 ありがとうございます。

その他の回答 (1)

  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.2

 回答No.1様の御回答で示されているもの以外にも原因ではないかと思われる点が御座います。  まず、 =COUNTIFS(A10:A47,"一日有休",B10:B47,">=" & DATE(YEAR(E11)-1,MONTH(E11),DAY(E11)),B10:B47,"<" & E11) という関数においてE11セルに入力されている日付のちょうど1年前の日付を求めるのに DATE(YEAR(E11)-1,MONTH(E11),DAY(E11)) という関数を使われておりますが、もしE11セルに日付が入力されていなかった場合には、 YEAR(E11)-1 は YEAR(0)-1 という事になり、 DATE(YEAR(E11)-1,MONTH(E11),DAY(E11)) の部分は DATE(-1,1,0) という事になってしまいますから、エラーとなってしまいます。  又、A10:A47やB10:B47などの検索条件範囲が全て相対参照となっているため、これをJ13セルにコピーしますと =COUNTIFS(A12:A49,"一日有休",B12:B49,">=" & DATE(YEAR(E13)-1,MONTH(E13),DAY(E13)),B12:B49,"<" & E13) となってしまい、もし仮にB11セルに「E13セルに入力されている有給付与日よりも前の1年間」の期間内に該当する日付が入力されていてもカウントされません。  同様にJ47セルにコピーした場合は =COUNTIFS(A46:A83,"一日有休",B46:B83,">=" & DATE(YEAR(E47)-1,MONTH(E47),DAY(E47)),B46:B83,"<" & E47) となってしまいますから、例えB11:B45のセル範囲の中に「E47セルに入力されている有給付与日よりも前の1年間」の期間内に該当する日付が入力されているセルがあったとしてもカウントされません。  この様な問題を解決するためには、一例として次の様な関数にされては如何でしょうか。 =IF(ISERROR(1/(DAY($E11))),"",COUNTIFS($A$10:$A$47,"一日有休",$B$10:$B$47,">=" & DATE(YEAR($E11)-1,MONTH($E11),DAY($E11)),$B$10:$B$47,"<" & $E11))

関連するQ&A