こんばんは。
エクセルは簡単な関数程度しか使えませんが、教えていただけると助かります。

今、生年月日から各健康健診が受けられるかをエクセルで返せるようにしたいのですが、検診ごとに対象が違い困っています
検診は複数あり、関数で組むかデータベースで返すか悩んでいます


(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 男  ×    ×      ○    ○

生年月日を入力してうけられる検診には○、受けられない検診には×
を返せるようにしたいのです

もしよろしければお力添えいただければと思います
よろしくお願いいたします

このQ&Aに関連する最新のQ&A

A 回答 (6件)

こんばんは



>検診は複数あり、関数で組むかデータベースで返すか悩んでいます
エクセルの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),"○","×")
となります。
    • good
    • 0
この回答へのお礼

rukukuさま

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

お礼日時:2009/05/20 23:02

>また、年齢なのですが、その検診日が人によって違うので


>データを常に更新したいと考えています
>つまり、年齢はその検診日の年齢表記にしたいのです
>その場合はどうすればよいでしょうか?

回答で書いた「年齢」は「年度」で計算するのためのものです。
受診日の年齢を知りたいのならば、D列に「受診日」を追加し、
E2に
=DATEDIF(B2-1,D2,"Y")
で得ることができます。
(^。^)v
    • good
    • 0
この回答へのお礼

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

お礼日時:2009/05/21 22:19

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
    • good
    • 0
この回答へのお礼

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

お礼日時:2009/05/21 22:18

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
    • good
    • 0

こんばんは!


質問内容の解釈が間違っていたらごめんなさい・・・

一番引っかかったのは
>また、年齢偶数というのは今日現在ではなく、年度ごとによって分けられています
 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
「【Excel】生年月日から受けられる検診」の回答画像3
    • good
    • 0
この回答へのお礼

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

お礼日時:2009/05/21 22:15

訂正です



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/NenreiKa …
しかし、DATEDIF関数は指定された「その日」との差を計算します。

法律による年齢のルールととDATEIDIF関数の微妙な違いによって、調整が必要になります。
    • good
    • 0
この回答へのお礼

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

お礼日時:2009/05/20 23:06

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qエクセル プルダウンの作り方

お世話になります。
エクセルでプルダウンの作り方を教えていただけませんでしょうか?
住所を▼のボタンでクリックしたら【北海道,青森,秋田,岩手・・・】などの選択ができるようにしたいのです。
宜しくお願いします。

Aベストアンサー

メニューから「データ」、「入力規則」、「設定」で「入力値の種類」を「リスト」を選択します。
そうすると「元の値」という表示がでますので、そこで前もって作っておいたリストの範囲を指定します。
多くないのでしたら、そのままそこにカンマで区切って入力しても出来ます。

Q生年月日から”○歳×ヶ月”を抽出したい(エクセル)

こんにちは(*^-^*)
例えば、
セルA1に「H15.2.10」と入力されていたときに、
B1に「0歳1ヶ月」と表示させたいのですが、どうしたらいいでしょうか?
「今日」までの月齢で、満何歳何ヶ月かということです。
よろしくお願いします。

Aベストアンサー

こんにちは

こういう風にしたらどうでしょう。

A1に『H15.2.10』が入っているとします。
B1には
=DATEDIF(A1,TODAY(),"Y")&"年"&DATEDIF(A1,TODAY(),"YM")&"ヶ月"
これでOKです。
ちなみに何日まで知りたければ、
&DATEDIF(A1,TODAY(),"MD")&"日"
を上記の式のあとに追加すれば、0年1ヶ月21日 と表示できます。

Qエクセルでプルダウンメニューの作り方

  エクセルの画面で、よく三角形を逆さまにした形をクリックするといくつかメニューが出てき、どれかを選べるようになっていますが、その作り方を教えてください。
 会社で人事を担当していますが、三角形(プルダウンボタン)をクリックすると社員氏名一覧が表示され、そこから選択できるようにしたいのです。
 しばらく自力でいろいろやってみましたが、さっぱり見当がつかず、どうやればいいのか分かりませんでした。よろしくお願いします。

Aベストアンサー

こんばんは!
当方使用のExcel2003での一例です!

↓の画像のようにSheet2に名簿表を作成しておきます。
画像ではSheet2のA2セル以降を範囲指定 → 名前ボックスに仮に「名簿」と入力しOK
これで範囲指定したセルが「名簿」と名前定義されましたので、

Sheet1のリスト表示させたいセルを範囲指定 → メニュー → データ → 入力規則
→ リスト → 「元の値」の欄に
=名簿
としてOK

これでSheet1のセルをアクティブにすると右側に下向き▼が表示されますので、そこをクリック!
これで希望に近い形にならないでしょうか?
Excel2007の場合は↓のURLが参考になるかもしれません。

http://www.eurus.dti.ne.jp/~yoneyama/Excel2007/excel2007-ny_kis2.html

尚、同一Sheetに「名簿表」を作成する場合は名前定義する必要はなくて
「元の値」の右側の四角をクリックし、リスト表示したいセルをそのまま範囲指定すればOKです。

以上、お役に立てば良いのですが・・・m(_ _)m

こんばんは!
当方使用のExcel2003での一例です!

↓の画像のようにSheet2に名簿表を作成しておきます。
画像ではSheet2のA2セル以降を範囲指定 → 名前ボックスに仮に「名簿」と入力しOK
これで範囲指定したセルが「名簿」と名前定義されましたので、

Sheet1のリスト表示させたいセルを範囲指定 → メニュー → データ → 入力規則
→ リスト → 「元の値」の欄に
=名簿
としてOK

これでSheet1のセルをアクティブにすると右側に下向き▼が表示されますので、そこをクリック!
これで希望に近い形にならない...続きを読む

QEXCELで19811012を1981/10/12と日付表示にしたいのですが?

EXCELで(例)19811012等の8桁の生年月日をたくさん作ったのですが、日付表示1981/10/12と表示したいのですが、どうすればよいでしょうか?教えていただければ助かります。お願いします。

Aベストアンサー

こんにちは。maruru01です。

データが1列に入力されている場合は、その列を選択して、
メニューの[データ]→[区切り位置]で[区切り位置指定ウィザード]を起動します。
そして、3/3ページの[列のデータ形式]で「日付」を選択して[完了]します。
これで、セルの表示形式で「日付」にすれば出来ます。

Qエクセル(Excel) 納品書の作り方【画像修正版

昨日http://oshiete.goo.ne.jp/qa/7348426.htmlで質問させていただき、詳しくご回答いただき少し進んだのですが、状況が変わったので改めて質問させていただきます。

■エクセル(Excel)で納品書の作成をしています。
シート1に納品書、シート2に商品マスタ(一覧)を作っていて、シート2の一覧を反映させて
納品書に番号を打ち込むだけで、商品名・単価までが出るシステムを作りたいのですが、
昨日のご回答の中の「VLOOKUP」?を入れて、自分なりにマス目の数字を変えてやってみたのですが
反映されずN/?のようなエラーになってしまいます。

※画像が見にくかったのでシート<CENTER></CENTER>だけにしました。

1、上記のように、シート2との関連付けの係数を、写真の場合の数字で教えてください。

2、合計と、合計から20%を引いた数値を割り出す関数も、写真の数字で御願いします。

宜しくご教授お願い致します。

Aベストアンサー

こんばんは!
前回投稿した者です。

当方もかなり古い(人間も古い!なぁ~んちゃって!)Excel2003を使用しています。
↓の画像のようにSheet2にデータを作成しておきます。

#N/A というエラーは、「検索値」がない!ということですので
お示しの画像のB列にSheet2のA列にないデータを入力するとそういったエラーが表示されます。

画像のセル配置ですと
C4セルに
=IF($B4="","",VLOOKUP($B4,Sheet2!$A:$C,COLUMN(B1),0))
(「$」マークの位置に気を付けてください)
という数式を入れD4セルまでオートフィルでコピー!
そのまま最後の24行目までコピーしておきます。

F4セルには
=IF(COUNTBLANK(B4:E4),"",D4*E4)
という数式を入れ、F24までオートフィルでコピー!

これでB列に商品番号を入力すればSheet2のデータが反映され、
E列に数量を入力でF列に金額が表示されると思います。

最後に合計金額のF26セルは
=IF(COUNT(F4:F24),SUM(F4:F24),"")
手数料のF27セルは
=IF(F26="","",F26*0.2)

これで何とか形にならないでしょうか?

※ 振込金額の欄は不明ですので手を付けていません。

参考になりますかね?m(_ _)m

こんばんは!
前回投稿した者です。

当方もかなり古い(人間も古い!なぁ~んちゃって!)Excel2003を使用しています。
↓の画像のようにSheet2にデータを作成しておきます。

#N/A というエラーは、「検索値」がない!ということですので
お示しの画像のB列にSheet2のA列にないデータを入力するとそういったエラーが表示されます。

画像のセル配置ですと
C4セルに
=IF($B4="","",VLOOKUP($B4,Sheet2!$A:$C,COLUMN(B1),0))
(「$」マークの位置に気を付けてください)
という数式を入れD4セルまでオートフィルで...続きを読む

Q平成○年○月○日午後○時○分 日と時間をわけたい

エクセルで「平成○年○月○日午後○時○分」という文字がはいったセルが1000行くらい
あるのですが、作業の過程で、「平成○年○月○日午後○時○分」を

      「平成○年○月○日」

      「午後○時○分」
を別のセルにわける必要がでてきました。単純にコピーをして、片方のセルは一気に時刻がはいってるところを消して、片方のセルは一気に日付がはいったところを削除したいのですが、どういった関数若しくはユーザ定義を行えばいいのでしょうか?

急ぎなので分る方がいれば教えて下さい。

Aベストアンサー

同じデータを表示書式を日付だけ、時刻だけにするので良ければ
A列に日付、時刻をが入っているとします。
1.A列の列名を右クリックから「コピー」
2.B列の列名を右クリックから「コピーしたセルの挿入」
  これでA列とB列は同じ内容が入っています
3.A列の列名を右クリックから「セルの書式設定」続いて表示形式タグで「日付」
  日付に関する表示パターンが西暦表示、和暦表示と各種用意されています
4.B列には時刻を表示するには、同様の要領で3.の選択が「時刻」

これでいかがでしょう
希望の表示パターンがないときはユーザー定義することもできます。
A列から時刻部分、B列から日付部分を除去するには一旦A列を削除
しますので、トラブルの原因になります。

Qエクセル(Excel) 納品書の作り方【改めて】

昨日http://oshiete.goo.ne.jp/qa/7348426.htmlで質問させていただき、詳しくご回答いただき少し進んだのですが、状況が変わったので改めて質問させていただきます。

■エクセル(Excel)で納品書の作成をしています。
シート1に納品書、シート2に商品マスタ(一覧)を作っていて、シート2の一覧を反映させて
納品書に番号を打ち込むだけで、商品名・単価までが出るシステムを作りたいのですが、
昨日のご回答の中の「VLOOKUP」?を入れて、自分なりにマス目の数字を変えてやってみたのですが
反映されずN/?のようなエラーになってしまいます。

※画像が貼り付けてあります。商品名は1番以外伏せさせていただいています。
くっつけてありますが、左側がシート1・右側がシート2です。

1、上記のように、シート2との関連付けの係数を、写真の場合の数字で教えてください。

2、合計と、合計から20%を引いた数値を割り出す関数も、写真の数字で御願いします。

宜しくご教授お願い致します。

Aベストアンサー

画像がいまいちよく見えないのですが、納品書の項目は左から、No、商品番号、商品名、単価、数量、金額でいいのでしょうか(名前は多少違っていても意味があっていればもんだいないです)

でしたら、
C1セルに=IF(ISBLANK(B2),"",VLOOKUP(B2,Sheet2!$A$2:$C$200,2,FALSE))
D1セルに=IF(ISBLANK(B2),"",VLOOKUP(B2,Sheet2!$A$2:$C$200,3,FALSE))
E1セルは空白で
F1セルに=IF(D2="","",D2*E2)
といれて、C1からF1までをコピーしてその下の行にタテに貼り付ければ出来ますよ。
おそらくエラーが出たのは、コピーしたときにVLOOKUP関数の最初のセルの指定がずれてしまっているのでは無いかと思いますよ。     

QEXCEL  「200×年××月分」の関数

エクセルで毎月作成している請求書に
「200×年××月分」という部分があり
それを関数を使って表示させたいのですが・・・

=TODAY() を使ったあと、セルの書式>日付>種類>”××年×月”を選択し「200×年××月」まで完成させました。
が、最後の「分」の文字をどうやって数式に組み込むのか解りません。

「200×年××月分」と表示させる数式を教えてください。

Aベストアンサー

セルの書式設定でユーザー定義に以下のように定義してください。

yyyy"年"m"月""分"

Qエクセル2007でプルダウンで選んだものに反応

Excel2007でプルダウンで選んだものに反応して隣のセルが自動入力される方法(エクセル2007)
A1をプルダウンで「猫」「犬」から選べるようにし、「猫」を選んだ場合B1に自動に「111」が、「犬」を選んだ場合B1に自動に「222」と入力されるようにしたいです。
ご教授の程、宜しくお願いします。

Aベストアンサー

VLOOKUP関数での方法です。
(1)別シートに入力文字列と対応コード表を作成。(仮にSheet2のA:B列範囲で順不同)
(2)B1に=IF(COUNTIF(Sheet2!A:A,A1),VLOOKUP(A1,Sheet2!A:B,2FALSE),"")を設定
   入力文字列が存在しない場合は空白としています。

Qエクセル INDEX関数 INDEX(○:○,○,○)&"" の 「&""」部分について

エクセル INDEX関数 INDEX(○:○,○,○)&"" の 「&""」部分はどういった働きがあるのでしょうか?
何を意味するのでしょうか?

また、これについて詳しく説明のあるHPなはありませんか?

よろしくご教授お願いいたします。

Aベストアンサー

&""をつけると、INDEX(○:○,○,○)の値が文字列に変換されます。
これをつけないと、INDEX関数で参照したセルが空白のときに0と表示されてしまいます。

単純な例で試すと、A1に何も入力しないで、他のセルに
=INDEX(A1:A1,1,1)
と入力すると、0が表示されると思います。
=INDEX(A1:A1,1,1)&""
とすれば、空白になります。


人気Q&Aランキング

おすすめ情報