• ベストアンサー

【Excel】生年月日から受けられる検診を返したい

こんばんは。 エクセルは簡単な関数程度しか使えませんが、教えていただけると助かります。 今、生年月日から各健康健診が受けられるかをエクセルで返せるようにしたいのですが、検診ごとに対象が違い困っています 検診は複数あり、関数で組むかデータベースで返すか悩んでいます 例 (1)一般検診・・・25歳以上70歳未満が対象 (2)××検診・・・20歳以上50歳以下、かつ年齢偶数、かつ女性のみ ・・・・ また、年齢偶数というのは今日現在ではなく、年度ごとによって分けられています  1980/4/2~1981/4/1 =29歳 奇数  1981/4/2~1982/4/1 =30歳 偶数 例(1)に関してはIFで絞り込んだのですが、例(2)は理論式がめちゃくちゃになってしまいました・・・ データベースを使おうかと思い、生年月日からVLOOKUPで探そうとしたんですが、そのデータベースが相当な量になってしまいます      一般検診 ××検診 ○○検診 ◇◇検診 1980/4/2  ○    ×     ×   × 1980/4/3  ○    ×     ×   × ~ 1981/4/2  ○    ○      ○    ○ これを延々とやるのはさすがに厳しいのではないかと思ってます・・・ (3万くらいいきました・・・。間違えたらおしまいという感じです) イメージとしては・・・             名前 生年月日 性別 一般検診 ××検診 ○○検診 ◇◇検診 ○○ 1980/8/8 女  ○    ×      ×    × ◇◇ 1989/9/9 男  ×    ×      ○    ○ 生年月日を入力してうけられる検診には○、受けられない検診には× を返せるようにしたいのです もしよろしければお力添えいただければと思います よろしくお願いいたします

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

  • ベストアンサー
  • rukuku
  • ベストアンサー率42% (401/933)
回答No.1

こんばんは >検診は複数あり、関数で組むかデータベースで返すか悩んでいます エクセルのIF関数でも、データベースでも、基本的な考え方は同じです。 >年齢偶数というのは今日現在ではなく、年度ごとによって分けられています 4月1日の時点での年齢を求めればOKです。 DATEDIFという関数が使えます。 http://www.relief.jp/itnote/archives/000423.php http://maglog.jp/excel/Article223046.html なお、今年の4月2日は、以下の数式で得られます。 =DATE(YEAR(TODAY()),4,1) >かつ年齢偶数 mod(年齢,2)=0 なら年齢は偶数です。 実際に運用するには、性別の右の列(以下の説明ではD列)に「年齢」という列をもうけておくと便利です。 D2の数式は以下のようになります。 =DATEDIF(B2,DATE(YEAR(TODAY()),4,1),"Y") これらを組み合わせると、「××検診」の二行目は =IF(AND(20<=D2,D2<70,C2="女",MOD(D2,2)=0),"○","×") となります。

1co2co3co
質問者

お礼

rukukuさま ご回答、ありがとうございます! なるほど、4/1時点で考えれば良いのですね ありがとうございます また、年齢なのですが、その検診日が人によって違うので データを常に更新したいと考えています つまり、年齢はその検診日の年齢表記にしたいのです その場合はどうすればよいでしょうか? 恐れ入りますが、ご回答いただけますと助かります

その他の回答 (5)

  • rukuku
  • ベストアンサー率42% (401/933)
回答No.6

>また、年齢なのですが、その検診日が人によって違うので >データを常に更新したいと考えています >つまり、年齢はその検診日の年齢表記にしたいのです >その場合はどうすればよいでしょうか? 回答で書いた「年齢」は「年度」で計算するのためのものです。 受診日の年齢を知りたいのならば、D列に「受診日」を追加し、 E2に =DATEDIF(B2-1,D2,"Y") で得ることができます。 (^。^)v

1co2co3co
質問者

お礼

すいません、何度もありがとうございます! 無事完成させることができました! 本当にありがとうございました!!

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.5

No.3・4です ほんとぉ~!にっ!ごめんなさい E3セル =IF(B3<=DATE(YEAR(B3),MONTH(4),DAY(1)),DATEDIF(B3,"2010/4/1","y"),DATEDIF(B3,"2010/4/1","y")) でした。 これでもかっ!というくらい顔をだしてしまいました。 どうもすみません。m(__)m

1co2co3co
質問者

お礼

いえいえ、何度もありがとうございます! おかげで、きちんとできました!! そして、勉強になりました ありがとうございました!

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.4

No.3です。 たびたびごめんなさい。 先ほどの回答でE3セルの数式が間違っていると思います。 E3 =IF(B3<=DATE(YEAR(B3),MONTH(4),DAY(1)),DATEDIF(B3,"2010/4/1","y")+1,DATEDIF(B3,"2010/4/1","y")) が正解だとおもいます。 (要らない「1」をプラスしていました) どうも何度も失礼しました。m(__)m

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.3

こんばんは! 質問内容の解釈が間違っていたらごめんなさい・・・ 一番引っかかったのは >また、年齢偶数というのは今日現在ではなく、年度ごとによって分けられています  1980/4/2~1981/4/1 =29歳 奇数  1981/4/2~1982/4/1 =30歳 偶数 というところです。 つまり年度末の4/1での年齢という解釈でいいのだと判断して ↓の画像のような表を作ってみました。 (※表では 1981/4/2~1982/4/1 =30歳 の部分が28歳になってしまいますけど、どちらが正しいのかわかりません) 作業列として、D列に実年齢・E列に年齢偶数を挿入しています。 実年齢が必要ないのであれば、削除してください。 数式としては D3 =DATEDIF(B3,TODAY(),"y") E3 =IF(B3<=DATE(YEAR(B3),MONTH(4),DAY(1)),DATEDIF(B3,"2010/4/1","y")+1,DATEDIF(B3,"2010/4/1","y")) F3 =IF(AND(D3>=25,D3<70),"○","×") G3 =IF(OR(C3="男",D3<20,D3>50,MOD(E3,2)=1),"×","○") として、D3~G3を範囲指定した後に、オートフィルで下へコピー 又はオートフィルマークの(+)でダブルクリック これで希望に近い形ができないでしょうか? 以上、参考になれば幸いですが、 的外れなら読み流してくださいね。m(__)m

1co2co3co
質問者

お礼

tom04さん こんばんは! 丁寧な解説ありがとうございます! すごく分かりやすくて助かりました! 本当にありがとうございます!

  • rukuku
  • ベストアンサー率42% (401/933)
回答No.2

訂正です 4/1日生まれの人をどう扱うかと考えているうちに記述を間違えました。 >なお、今年の4月2日は、以下の数式で得られます。 >=DATE(YEAR(TODAY()),4,1) 今年の4月2日を得るには =DATE(YEAR(TODAY()),4,2) です。 年齢を計算する式については、先ほどの回答(↓)の通りです。 =DATEDIF(B2,DATE(YEAR(TODAY()),4,1),"Y") 年齢は、誕生日の「前日」加算されます。 http://koyomi.vis.ne.jp/doc/mlwa/200804020.htm http://www5d.biglobe.ne.jp/Jusl/TomoLaw/NenreiKazoekata.html しかし、DATEDIF関数は指定された「その日」との差を計算します。 法律による年齢のルールととDATEIDIF関数の微妙な違いによって、調整が必要になります。

1co2co3co
質問者

お礼

わざわざ訂正ありがとうございます! 年齢は誕生日の前日加算なんですね・・ それも初めて知りました・・・ 本当にありがとうございます!

関連するQ&A

  • Excel条件付で偶数・奇数を判断するには?

    Excel上でセルの値が偶数か奇数かにより色つけをしたく 条件付書式の機能を調べていたのですが 偶数行、奇数行を色付けするには、という例は見つかるのですが セルの値を偶数か奇数かを判断し色付けする という方法が見つかりませんでした。 セル行列数を判断するのではなく、セル値を判断する方法はどうしたらよいのでしょうか。 例 1,3,4,6,7,99,115,11… 2,4,6,8,65,78,… と書かれたシートで偶数は赤文字、奇数は青文字にするには?

  • 子宮がん検診を安く受ける方法はありますか?

    子宮がズキズキ痛むので前々から子宮がんだったら・・・と気になっています。 おりものや生理は通常で特別な変化はありません。 市役所のホームページでは今年偶数の年齢が集団検診が受けられると書いてありましたが私は今奇数年齢です。 今パートなので会社の健康診断などはありません。未婚です。 これだけどこも子宮がん検診を勧めているわけですから、集団検診みたくすごく安く受けられなくても、市と提携してる産婦人科(?)とか、なにかあったり、安く受けられる方法はあるのでしょうか? やはり普通に1万くらいかかるのでしょうか?

  • エクセルで偶数か奇数かを調べるにはどうすればいいですか?

    エクセルで関数の入ったセルの答えが偶数か奇数かでセルの色を変えたいのですが、 そんなことはできるのでしょうか? 数値の入ったセルはMOD関数などで偶数or奇数の判断が出来るので、条件付書式で偶数セルと奇数セルの色分けが出来たのですが、 数式の入ったセルの答え(表示されている数値)が偶数か奇数かを判断することができず困っています。 もしかして不可能なことなのでしょうか? どなたかご指導下さい。よろしくおねがいします!

  • エクセルで生年月日を入力しいろいろ検索する方法

    いつもお世話になっています。 今回も判らないので、教えてください。 まず、シート1のH1にTODAY関数をいれ、本日の日付を表示させてます。(例:2008/12/13) A5に、ナンバー(例:NO.1)、 B5に名前(例:山田花子)、 C5に生年月日(例:2001/12/4)、 G5に年齢を出すために=DAY360(C5/360,$H$1/360,FALSE)を入力しています。 シート2にA5にナンバー(例:NO.1)、 B5に名前が=VLOOKUP(A5,'Sheet1 (2)'!A5:B200,2,FALSE) C5に生年月日の年(例:2001) D5に生年月日の月(例:12) E5に生年月日の日(例:4) G6に年齢=VLOOKUP(A5,'Sheet1 (2)'!A5:G200,6,FALSE)を入力し、4行目のA~Eには見出しをつけています。(例:A4には“ナンバー”、B4には“名前”)。 4行目にオートフィルタを付け、○月生まれの人は、誰がいるのか?を見れるようにしてます。 シート1はデーターの入力画面とて、シート2では検索画面と使用してますが、生年月日はこの様に2度打ちしないとできないので、とても面倒です。 生年月日を一度入力するだけで、年齢表示と、○月生まれの人が誰なのかを調べるのもできる方法はありますか? ちなみに、シート2にオートフィルタを付けることにより、名前の順(あ行~)の並び替えに役立っています。 もし、今回の質問でオートフィルを使用しない方法であれば、大変恐縮ですが、名前の順での表示もできるようにお願いします。 どうぞよろしくお願いします。

  • エクセルの生年月日の入力方法で、0を表示したいのです

    エクセルで生年月日を「S43.05.08」というように「0」を表示して入力したいのですが、どうしたらいいでしょうか?それを使ってDATEDIF関数で年齢を求めたいのです。ぜひお教えください!!お願いします。

  • エクセルでリンクや並べ替えを多用するのですが

     エクセルでデータ整理をするのに、シート1で入力したデータをシート2に反映させて、さらに並べ替えも済ませたいんです。  説明しにくいですが、シート1で奇数番号の人、偶数番号の人にわけて入力をします。  シート2では奇数偶数をまとめ、番号順になっている状態のデータにしたいんです。シート1に入力したらシート2に自動的に入力されるようリンクもしたいです。  vlookup などの関数もいろいろ使っているので、参照値などが変わったりしないか心配です。  実際作ってみているのですが、何か簡単な方法(マクロは使いたいのですが、やり方がわかりません)があれば教えてください。

  • エクセルで生年月日から現在の年齢を計算する関数はないですか?

    エクセル95か2000でかまわないのですが、生年月日から現在の年齢を自動的に計算する関数は何かないでしょうか? たとえば、あるセルに生年月日を入力しておきます。行に2002年10月、11月、12月・・・と入力しておき、それぞれ2002年10月、11月、12月の年齢が、生年月日から計算されて参照されるような関数です。

  • 生年月日から年齢を割り出す関数について

    先日以下のような問題が生じ大変困っております。 エクセルで社員の生年月日が西暦で表示されているのですが、 ここから現時点の満年齢を表示させる関数が分かりません。閏年とかの関係でどのようにしたらよいのか悩んで おります。  ここでお願いしてよいのかも分かりませんが、どうぞ お知恵のある方教えて下さいませ。 勉強不足ですいません。

  • いまさらながらに、Excel関数で悩んでおります。

    はじめましてこんにちは! Excel関数で悩んでいます。。。 年齢ごとの会員数から、利用者の平均年齢を導き出したいのですが、どのように関数組むと出るものなのでしょうか? 例として以下から導き出される年齢は何にな るのでしょう。。 年齢 会員 18歳 1,300 19歳 4,600 20歳 12,500 21歳 22,800 22歳 34,000 23歳 43,800 24歳 53,800 25歳 60,500 26歳 66,600 27歳 72,600 28歳 77,800 29歳 83,400 30歳 89,200 ご存知の方いらっしゃいましたら教えてください。 宜しくお願い致します。

  • EXCEL2007 生年月日で学年表示、9月~の役表示は?

    Excelにて名簿作成している初心者です。 ネットで調べ、生年月日から現在の学年表示させることはできました。 LOOKUP関数にて4/2以降の生まれを条件にて検索させているらしいです。(コピペでやったので、あまり詳しくわかりません) 問題はその後で、その学年から今度は9月以降に役の区分変更があるので、昇順ではない検索列(小学生~高校生)を元に値を返したいのです。 =IF(ISERROR(VLOOKUP(  =TRUE,"",・・・ やMATCH関数みたいなのですが エラーを返さないようにはしたいです。 今は9月以前と以降の役名を検索用に2列で作成済みです。 関数の多数組合せがわかりにくいもので、すみませんがよろしくお願いします。

専門家に質問してみよう