![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
前回回答をいただきましたが、また問題があったので質問します。
【次のの条件で次回受診期限日を表示する関数を、どなたか教えていただけますか?
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となればよいのですが・・・・・
複雑なので難しいのでしょうか?
No.4ベストアンサー
- 回答日時:
A4セルには、次の数式を入力されると良いと思います。
=IF(AND(ISNUMBER(A$2),ISNUMBER(A$3),A$3>=A$2),IF(AND(DATEDIF(A$2,A$3,"Y")>62,DATEDIF(A$2,A$3,"Y")<65),DATE(YEAR(A$2)+66,MONTH(A$2),DAY(A$2)),IF(AND(DATEDIF(A$2,A$3,"Y")>72,DATEDIF(A$2,A$3,"Y")<75),DATE(YEAR(A$2)+76,MONTH(A$2),DAY(A$2)),DATE(YEAR(A$3)+IF(DATEDIF(A$2,A$3,"Y")<75,3,1),MONTH(A$3),DAY(A$3)))),"")
この数式で結果を表示するのに必要なデータは、A3セルとA4セルのみです。
尚、その他のセルの数式に関しては変更はありません。
No.3
- 回答日時:
前回に答えを示したものです。
なぜ同じご質問の中で疑問点を解決しないのでしょう。今後はそのようにすることを希望します。A6セルやA7セルのデータを使わなくても良い方法です。
A4セルには次の式を入力します。
=IF(DATE(YEAR(A3)+3,MONTH(A3),DAY(A3))<=DATE(YEAR(A2)+66,MONTH(A2),DAY(A2)),DATE(YEAR(A3)+3,MONTH(A3),DAY(A3))-1,IF(DATE(YEAR(A3)+3,MONTH(A3),DAY(A3))<=DATE(YEAR(A2)+68,MONTH(A2),DAY(A2)),DATE(YEAR(A2)+66,MONTH(A2),DAY(A2))-1,IF(DATE(YEAR(A3)+3,MONTH(A3),DAY(A3))<=DATE(YEAR(A2)+76,MONTH(A2),DAY(A2)),DATE(YEAR(A3)+3,MONTH(A3),DAY(A3))-1,IF(DATE(YEAR(A3)+3,MONTH(A3),DAY(A3))<=DATE(YEAR(A2)+78,MONTH(A2),DAY(A2)),DATE(YEAR(A2)+76,MONTH(A2),DAY(A2))-1,DATE(YEAR(A3)+1,MONTH(A3),DAY(A3))-1))))
No.2
- 回答日時:
こんばんは!
外しているかもしれませんが・・・
全て数式で処理しようとするとかなり長いものになってしまうと思いますので、
↓の画像のように二つの表を作ってみました。
問題になるのは、前回の受診日の3年後が誕生日より前か?後か?によって変わってくると思います。
その年齢の境目が63・64歳と73・74歳ではないかと思います。
そこで、この年齢の場合のみ上側の表を使い、それ以外は下側の表を使うようにしています。
A6セルには
=IF(A1<=65,EDATE(A2,12*65),"")
A7セルには
=IF(A1>65,EDATE(A2,12*75),"")
という数式を入れています。
そして、E2セルに
=IF($A$1=D2,EDATE($A$3,36)-1,"")
という数式を入れ、E5セルまでオートフィルでコピー
F2セルは
=IF($A$1=D2,EDATE($A$6,12)-1,"")
として下のF3セルまでコピー
F4セルは
=IF($A$1=D4,EDATE($A$7,12)-1,"")
として下のF5セルまでコピーしています。
最後にA4セルに
=IF(COUNTIF(D2:D5,A1),MIN(E2:F5),EDATE(A3,VLOOKUP(A1,D8:F9,3,1))-1)
という数式を入れています。
尚、EDATE関数を使用するに当たり、当方使用のExcel2003以前のバージョンでは
メニュー → ツール → アドイン → 「分析ツール」にチェックを入れておく必要があります。
以上、参考になれば良いのですが
的外れならごめんなさいね。m(__)m
![「最新受診日から次の受診日を表示する関数(」の回答画像2](http://oshiete.xgoo.jp/_/bucket/oshietegoo/images/media/f/667667_5497e4d04361b/M.jpg)
No.1
- 回答日時:
こんなのは何度も質問する内容ではなかろう。
回答をどれが良いか判断できないか、回答の本当の意味が良く理解できない状態ではないですか。ーー
年齢で次回受信日が決るのでしょう。
(1)年令は=DATEDIF(生年月日、今回受診日,"Y")で判る。
(2)受診日現在の年齢により、次回受診間での間隔年(期間)が判る。
3年か1年の2種だが、関数的にはVLOOKUPのTRUE型を使えば、何通りあろうとも対処できる。
(3)その求めた年数Xを、今回の受診日に(年を)足す。
日数の足し算と違って、年への足し算はYEAR関数で年部分を取り出し、そこへ+Xする。
==
こういう理解で間違ってますか。捨石になりますから、違っていたら後の回答者のために、補足して置いてください。
===
>65歳までは受診した日から3年ごとに受診 判る
>65歳に到達した日から1年以内に受診、受診日より75歳に到達するまでは3年ごとに受診。
この意味は?
>75歳に到達した日から1年以内に受診、受診日より1年ごとに受診。
「受診、」の後に何が来るのかな?
===
質問のいみが明確でないので間違っているかも知れないが
検索表
G列 H列
03
653
751
ーーーー
誕生日受診日年令 年後 次回受診日
1965/11/23 2010/12/14532013/12/1
1945/11/4 2010/12/16532013/12/1
1940/11/3 2010/12/17032013/12/1
1935/11/3 2010/12/17512011/12/1
C2の式 =DATEDIF(A2,B2,"Y")
D2の式 =VLOOKUP(C2,$G$1:$H$3,2,TRUE)
E2の式 =DATE(YEAR(B2)+D2,MONTH(B2),DAY(B2))
わざとD列に中間結果を出していますが、D列は用いない式にする方法はわかりますね。
E列の式のD2のところにD2の式と置き換えればよい。
この回答への補足
質問が的確でなくて失礼いたしました。
65歳までは受診した日から3年後までにに受診する。
65歳に到達した日から1年以内に受診しなければならないが、
65歳以前に受診した日より3年後が、65歳に到達した日から1年後より以前の日であればその日を優先する。
その後は75歳に到達するまでは3年ごとに受診する。
75歳に到達した日から1年以内に受診しなければならないが、
75歳以前に受診した日より3年後が、75歳に到達した日から1年後より以前の日であればその日を優先する。
その後は1年ごとに受診する。
上記の条件で、次回受診しなければならない期限を表示する。
ということですが理解できますでしょうか?
努力しましたが、私の理解力が乏しく解決できませんでした。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 現時点の年齢を算出して、その年齢と一致したセルを色付けしたい。 4 2022/06/23 17:49
- Visual Basic(VBA) 【再投稿】VBAのシフト表でバグが出て困っています 3 2022/09/24 08:29
- Visual Basic(VBA) 今日の日付が過ぎたらその行を削除したい 1 2023/04/01 20:06
- 数学 a1,a2, a3をベクトル空間Vのベクトルとする。a1+a2,a2+a3,a3+a1が一次独立のと 2 2022/10/02 15:55
- Excel(エクセル) マクロだと数式が表示される 2 2022/09/10 14:48
- Visual Basic(VBA) ①ExcelVBAでカレンダーを作り、別のユザーフォームで日付を入力したいのですがエラーになります。 1 2023/02/17 18:39
- 英語 "this day"が当日か今日を表すのかの使い分け方等について 5 2023/08/08 14:29
- Excel(エクセル) ユーザー定義について質問です。 2 2023/06/28 13:21
- Visual Basic(VBA) ExcelのVBAでシフト表を作っていますが、バグが出て困っています 2 2022/09/13 11:33
- 数学 3次元実ベクトル空間において, 平面 P:x-y+z+1=0 と直線 L:2(x-1)=-y=-z 3 2022/10/29 14:39
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【EXCEL】画像の黄色部分の抽出...
-
文字2桁、3桁交じりの文字列...
-
Excelについての質問です。 B2...
-
絶対参照
-
マクロエクセルのブロック解除
-
Excelで表を作ったところに文字...
-
職場の人から聞かれており、こ...
-
DATE関数で現在の年齢を出した...
-
エクセルのクイックアクセスツ...
-
エクセルのクイックアクセスツ...
-
Excelピボットテーブルの1行目
-
REGEXREPLACE関数について、
-
ユーザー定義関数をアドイン登...
-
Excel関数-文字列で自動作成さ...
-
スプレッドシートで使う数式を...
-
在庫管理表に使うエクセルの関...
-
エクセルで表
-
エクセルの関数について教えて...
-
スプレッドシート、Excelでの数...
-
(マクロ)vlookupの元データを同...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルVBA、別ブックへ転記す...
-
エクセルでの作業計算方法について
-
時間によってファイル名が変わ...
-
【関数】適切な文字数の数字を...
-
Excelについて教えてください
-
エクセル初心者です 関数の入れ...
-
【マクロ】ファイル名の変更に...
-
UNIQUE関数が使えないバージョ...
-
エクセルの計算
-
【関数】先頭だけにある、半角...
-
Excelで、決まった行を繰り返し...
-
Excelでセルの値が同じか...
-
LOOKUP関数を使えばいいのでし...
-
Excel
-
はがきについて。
-
エクセルの条件付き書式につい...
-
エクセルのデーターが2か月前の...
-
エクセル②
-
エクセルで「-0.0」と表示さ...
-
Microsoft1Officeの互換ソフト...
おすすめ情報