• ベストアンサー

エクセルの関数

=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/7940)
回答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

  • エクセル数式

    =COUNTIFS(A10:B47,S2,B10:B47,">=&DATA(yesr(E11)-1,MONTH(E11),DAY(E11))",B10:B47<E11) 上記数式でエラーが出るのですが 記号とか基本的なことと思いますが間違いを 教えてください。

  • Excel VBAで「date」関数を使いたい

    VBAを使用して年月日を入力してます。 セルに表示だけなら Year & "/" & Month… とかでもいいんですが、その日付で計算を行いたいんです。 何日足す、とか。。 それでExcelで使える Date(Year,Month,Day) を思い出したんですが、VBAではエラーになってしまいました。 Application.WorksheetFunction.Date(Year, Month, Day) や Application.Date(Year, Month, Day) もダメでした。 どのようにしたら入力した日付で計算が行えるでしょうか?

  • エクセルの関数について

    Sheet1  |**********| Sheet2       A       B 1|2005/01/20|ABC| 2|2005/03/15|DEF| 3|2005/04/20|XXX| わかりずらくてごめんなさい。エクセル初心者です。 関数のことで質問させてください。 Sheet2の「B」の列に「ABC」の語を含んでいた場合、Sheet1の「********」のセルに「A」の列の日付に半年をプラスした日付を表示させたいのです。 もし含んでいない場合は、表示しなくてもいいのですが、この場合どのように数式を作っていいのかわかりません。 ちなみに自分で作った数式は =if(sheet2!B1=”ABC”,date(year(sheet2!A1)+0,month(sheet2!A1)+6,day(sheet2!A1)+0),””)でした。 しかし、これでは「B2」や「B3」に「ABC」が入った場合には適用されません。 頭が痛くなってきたので質問させていただくことにしました。 よろしくお願いいたします。

  • Excelの数式について教えてください

    Excelの数式について教えてください カテ違いでしたらすみません Excelの数式にすいて質問です 福祉サービスの利用にかかわる仕事をしています 受給者証の支給開始日や、サービスの利用期間の管理をするため、表にまとめています セルB…サービス種別(機能訓練、生活訓練) セルG…利用開始日 セルM…経過月数 サービス利用期間 機能訓練…18ヶ月まで 生活訓練…24ヶ月まで 注)利用開始が4月1日からの場合、4月を1ヶ月目とする。利用開始が4月2日の場合、翌月5月を1ヶ月目とする これらを踏まえて、回答をいただきたいです Excelにて経過月数を表示させ、現在何ヶ月経過しているか・また、機能訓練18ヶ月、生活訓練24ヶ月を超えた場合、「終了」と表示させるため、セルMにこの様な数式を入力しています =IF(OR(IF(B2="機能訓練",IF(DAY(G2)=1,DATEDIF(DATE(YEAR(G2),MONTH(G2),1),DATE(YEAR(NOW()),MONTH(NOW()),1),"M")+1,DATEDIF(DATE(YEAR(G2),MONTH(G2),1),DATE(YEAR(NOW()),MONTH(NOW()),1),"M"))>18),IF(B2="生活訓練",IF(DAY(G2)=1,DATEDIF(DATE(YEAR(G2),MONTH(G2),1),DATE(YEAR(NOW()),MONTH(NOW()),1),"M")+1,DATEDIF(DATE(YEAR(G2),MONTH(G2),1),DATE(YEAR(NOW()),MONTH(NOW()),1),"M"))>24)),"終了",IF(DAY(G2)=1,DATEDIF(DATE(YEAR(G2),MONTH(G2),1),DATE(YEAR(NOW()),MONTH(NOW()),1),"M")+1,DATEDIF(DATE(YEAR(G2),MONTH(G2),1),DATE(YEAR(NOW()),MONTH(NOW()),1),"M"))) しかしこの状態では、セルGに利用開始日が入っていない時、セルMには「1328」と表示されてしまいます そのため、 =IF(G2="","",IF(OR(IF(B2="機能訓練",IF(DAY(G2)=1,DATEDIF(DATE(YEAR(G2),MONTH(G2),1),DATE(YEAR(NOW()),MONTH(NOW()),1),"M")+1,DATEDIF(DATE(YEAR(G2),MONTH(G2),1),DATE(YEAR(NOW()),MONTH(NOW()),1),"M"))>18),IF(B2="生活訓練",IF(DAY(G2)=1,DATEDIF(DATE(YEAR(G2),MONTH(G2),1),DATE(YEAR(NOW()),MONTH(NOW()),1),"M")+1,DATEDIF(DATE(YEAR(G2),MONTH(G2),1),DATE(YEAR(NOW()),MONTH(NOW()),1),"M"))>24)),"終了",IF(DAY(G2)=1,DATEDIF(DATE(YEAR(G2),MONTH(G2),1),DATE(YEAR(NOW()),MONTH(NOW()),1),"M")+1,DATEDIF(DATE(YEAR(G2),MONTH(G2),1),DATE(YEAR(NOW()),MONTH(NOW()),1),"M")))) というような式を入れましたが、エラーになります 出来たら新規で入力する列には、値が出ないようにしたいので、空欄にしておきたいのです どこが間違っているのでしょうか? アドバイスいただけるとうれしいです。宜しくお願いします

  • エクセル関数について質問です。

    はじめて投稿します。 エクセルで今日から半年後-1日(と今日から一年-1日)の表示が出来るようにしたいのですが、 どのようにしたら出来ますか? =DATE(YEAR(A1),MONTH(A1)+6-1,DAY(A1-1)) 上記で入力したみましたが、2011/06/01から半年-1は 2011/11/30 となってほしいのに 2011/12/01 となってしまいました。 教えてください。よろしくお願いします。

  • 関数の作り方(初心者です)

    バブルソートをするプログラムを作っています。 以下の部分を関数として、作って挿入したいのですがどのようにすれば 読み出すことができるのでしょうか。 { int a,b,c,d; float e,f; a=year[l+1] year[l+1]=year[l] year[l]=a b=month[l+1] month[l+1]=month[l] month[l]=a c=day[l+1] day[l+1]=day[l] day[l]=c d=code[l+1] [l+1]=code[l] code[l]=d e=latitude[l+1] [l+1]=latitude[l] latitude[l]=d f=longitude[l+1] [l+1]=longitude[l] longitude[l]=f }

  • Excelで第一〇曜日を求める方法がわかりません

    初めて質問させていただきます。 Excelファイルで毎月お客様に送付状を作成しており、その送付状内に次月作業日程(何月何日何曜日)を載せて送付しております。 弊社は基本的に第1水曜日など曜日で定期日程を組んでいるお客様が多い状態です。 現在カレンダーと睨めっこしながら手入力しておりますが、自動表示したいです。 色々調べた結果 =DATE(YEAR(B2),MONTH(B2)+1,1)+7-WEEKDAY(DATE(YEAR(B2),MONTH(B2)+1,1),2)+1 の数式を使うとできるようなのですが、この数式だと第一週の始まりが日曜日に限定されている?ようです。 例えば、今月2012年10月の送付状を作る時、来月の日程が第一土曜日の場合。 =DATE(YEAR(B2),MONTH(B2)+1,1)+7-WEEKDAY(DATE(YEAR(B2),MONTH(B2)+1,1),2)+6 ※B2には2012/10/8と記入されている。 と入力すると、11月10日と第二土曜日が入力されてしまいます。 この部分を11月3日と表記されるように数式を入力したいのです。 何かいい方法はありませんでしょうか? 分かりにくい文章ですいません。宜しくお願いします。

  • エクセルで関数のデータの後に続けて文字を入れたい。

    エクセル初心者です。 例えば、セルに「=DATE(YEAR(A1),MONTH(A1),DAY(A1))」として表示が「H16.1.1」とした時 「H16.1.1から」と「から」を追加させたいのですが 出来ますでしょうか、教えてください。

  • 20日締めの表示がずれる

    いつもお世話になります。 WIN7 EXCELLL2010 です。 添付図で説明さていただくと、 A2 A3 は20日の締めで翌月の入金の設定したいのです。 ところが 「I6」に「2,500」が1列ずれて表示されます。 これを  「J6」に「2,500」に修正したい。 どこか私のやり方に問題があると思いますが御指導をいただけませんでしょうか。 参考に I1 =DATE($D$1-1,12,1) J1 =DATE($D$1,1,1) I6 =SUMPRODUCT(($A$2:$A$1000>=DATE(YEAR($I$1),MONTH($I$1)-1,VLOOKUP($E7,$E$3:$G$7,2,0)))*($A$2:$A$1000<=DATE(YEAR($I$1),MONTH($I$1),VLOOKUP($E7,$E$3:$G$7,3,0)))*($B$2:$B$1000=$E7)*($C$2:$C$1000))

  • 最新受診日から次の受診日を表示する関数(再度)

    前回回答をいただきましたが、また問題があったので質問します。 【次のの条件で次回受診期限日を表示する関数を、どなたか教えていただけますか? 65歳までは受診した日から3年ごとに受診。 65歳に到達した日から1年以内に受診、受診日より75歳に到達するまでは3年ごとに受診。 75歳に到達した日から1年以内に受診、受診日より1年ごとに受診。 受診日(A3)は最新受診日を常に打ち込んで更新するものとします。 年齢(A1)は関数で生年月日より、リアルタイムで表示。 以下のセルの並びで考えていますが、効率のよい方法もあれば教えてください。 タイプ1) 年齢(A1) 生年月日(A2) 受診日(A3) 次回受診期限日(A4) または   タイプ2) 年齢(A1) 生年月日(A2) 受診日(A3) 次回受診期限日(A4) 65歳到達日(A6) 75歳到達日(A7)】 という質問をしました。 前回、の回答で 回答1 タイプ2で対応するのがA3に入力する式を省略できる点でベターでしょう。 A1セルには次の式を入力します。 =DATEDIF(A2,TODAY(),"Y") A4セルには次の式を入力します。 =IF(DATE(YEAR(A3)+3,MONTH(A3),DAY(A3))<=A6,DATE(YEAR(A3)+3,MONTH(A3),DAY(A3)),IF(A3<=A6,DATE(YEAR(A6)+1,MONTH(A6),DAY(A6)),IF(DATE(YEAR(A3)+3,MONTH(A3),DAY(A3))<=A7,DATE(YEAR(A3)+3,MONTH(A3),DAY(A3)),IF(A3<=A7,DATE(YEAR(A7)+1,MONTH(A7),DAY(A7)),DATE(YEAR(A3)+1,MONTH(A3),DAY(A3))))))-1 A6セルには次の式を入力します。 =DATE(YEAR(A2)+65,MONTH(A2),DAY(A2)) A1セルを除いてセルの表示形式は日付にします。 A7セルには次の式を入力します。 =DATE(YEAR(A2)+75,MONTH(A2),DAY(A2)) という回答と 回答2 タイプ1 A1=DATEDIF(A2,TODAY(),"y") A2=生年月日 A3=直近の受信日 A4=(LOOKUP(A1,{0,63,64,65,74},{3,2,1,3,1})+YEAR(A3)&"/"&TEXT(A3,"MM/DD"))-1 タイプ2 A1=DATEDIF(A2,TODAY(),"y") A2=生年月日 A3=直近の受信日 A4=(LOOKUP(A1,{0,63,64,65,74},{3,2,1,3,1})+YEAR(A3)&"/"&TEXT(A3,"MM/DD"))-1 A6=DATE(YEAR(A2)+65,MONTH(A2),DAY(A2)) A7=DATE(YEAR(A2)+75,MONTH(A2),DAY(A2)) という回答をいただきましたが、よくみると 生年月日がS21.9.23だとし、近受診日がH21.7.4の場合 回答1 だと 受診期限がH22.7.3 となり 回答2 だと 受診期限がH24.9.22 になります。 実際は、受診して3年後がH24.7.3であり、65歳に到達するのがH23.9.23である為、 H24.9.22が受診期限だと65歳到達から1年以内だが、3年を過ぎてしまいます。 受診期限がH24.7.3となればよいのですが・・・・・ 複雑なので難しいのでしょうか?

専門家に質問してみよう