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

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


(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エクセルで(~以上,~以下)の式を教えてください

エクセルで,年齢入りの名簿があるのですが,60歳~69歳,70歳~74歳,75歳以上の在籍人数を調べたいのです。
75歳以上なら =countif(範囲,">75") で出てくるのですが何歳以上何歳以下といった二重の条件の場合はどういう式にすれば出来るのでしょうか?

Aベストアンサー

こんにちは。maruru01です。

横から失礼しますが、No.2の方の回答はちょっと間違っていますね。
70歳以上74歳"以下"の場合(74歳を含む)は、

=COUNTIF(範囲,">=70")-COUNTIF(範囲,">74")

で、70歳以上74歳"未満"の場合(74歳を含まない)は、

=COUNTIF(範囲,">=70")-COUNTIF(範囲,">=74")

になります。

あと、FREQUENCY関数を使用する方法があります。
例えば、D1:D4を選択して、

=FREQUENCY(範囲,{59,69,74})

と入力して、[Ctrl]と[Shift]を押しながら[Enter]を押して確定します。
(数式の両端に「{}」が付いて配列数式になります。)
これで、D1から順に、
59歳以下
60歳以上69歳以下
70歳以上74歳以下
75歳以上
の人数になります。

Qエクセルの偶数行(奇数行)の抽出

エクセルにある数値列が入力されています。
この列の偶数行もしくは奇数行だけを抽出したいと考えていますが、どのような方法があるでしょうか?

Aベストアンサー

シートのA列に1から連番をつけて、B1に「=MOD(A1,2)」と入力。下にコピーして行くと、奇数=1
偶数=0になるので、表全体をその列でソート。きれいに偶数・奇数に分かれます。

QエクセルのIF関数で、文字が入力されていたならば~

エクセルのIF関数で文字が入力されていたならば~、という論理式を組み立てたいと思っています。

=IF(A1="『どんな文字でも』","",+B1-C1)

A1セルに『どんな文字でも』入っていたならば、空白に。
文字が入っていなければB1セルからC1セルを引く、という状態です。

この『どんな文字でも』の部分に何を入れればいいのか教えてください。

またIF関数以外でも同様のことができれば構いません。

宜しくお願いします。

Aベストアンサー

=IF(ISTEXT(A1),"",B1-C1)

でどうでしょうか?

QEXCELで奇数と偶数で色を分ける。

こんばんわ。

EXCELでセルの値が奇数なら黄色偶数なら青色と色を付けたいのですが、条件付書式で設定は可能でしょうか?

よろしくお願いします。

Aベストアンサー

◆条件付き書式で
「条件1」=MOD(A1,2)=1 黄色
「条件2」=MOD(A1,2)=0 青色

>整数で割り切れない場合は黄色って出来ますか
★よく理解できませんが、例えば「小数」だとしますと
「条件3」 =A1<>INT(A1) で指定の色でいかがでしょうか?

Qexcelからexcelへの差し込み印刷

お世話になります。

excelでwordへの差し込み印刷をよく利用するのですが、
同様に、
excelのデータをexcelに流し込んで印刷する方法はありますでしょうか。

excelの名簿のデータを
excelの表のフォーマットに流し込んで
1人づつ印刷したいのですが。

お分かりの方いらっしゃいました教えてください。
どうぞ宜しくお願い致します。

Aベストアンサー

イメージはわかるが、エクセルに差込印刷の機能はありません。
ワードなどと違ってA.X氏1人分書類シート作成、B印刷、Aのシートををy氏分のデータでシート内容(セル)を置き換え、印刷、の繰り返しをします。
ーー
例データ Sheet1 A1;D3
連番氏名住所品物
1山田 三郎東京都江東区かばん
2植田 健横浜市港北区帽子
A列はこのたび連番を振りました。
Sheet2   に送り状の書式を体裁よく作ります。
H1セル(どこでも良いが、下記のVLOOKUPの式は変わる)

送り状

住所X
氏名Y

品物Z

上記の品をお送り申し上げます。
ご査収ください

以上
Xの場所のセルに =VLOOKUP($H$1,Sheet1!$A$1:$D$3,2,FALSE)
Yの場所のセルに =VLOOKUP($H$1,Sheet1!$A$1:$D$3,3,FALSE)
Zの場所のセルに =VLOOKUP($H$1,Sheet1!$A$1:$D$3,4,FALSE)

---
結果

送り状

住所山田 三郎
氏名東京都江東区

品物かばん

上記の品をお送り申し上げます。
ご査収ください

以上
ここで
VBE画面で標準モジュールに
Sub test01()
For i = 1 To 2 '人数分
Range("H1") = i
Range("A1:G20").PrintOut '印刷範囲は各人同じとする
Next i
End Sub
を張り付け、実行する。
山田、植田分の紙が2枚印刷されました。
これは質問者はVBAの経験も無いでしょうと、最低限にしてあります。
VBAを勉強してください。
別ブックにある名簿を対象などは複雑になるので避けています。

イメージはわかるが、エクセルに差込印刷の機能はありません。
ワードなどと違ってA.X氏1人分書類シート作成、B印刷、Aのシートををy氏分のデータでシート内容(セル)を置き換え、印刷、の繰り返しをします。
ーー
例データ Sheet1 A1;D3
連番氏名住所品物
1山田 三郎東京都江東区かばん
2植田 健横浜市港北区帽子
A列はこのたび連番を振りました。
Sheet2   に送り状の書式を体裁よく作ります。
H1セル(どこでも良いが、下記のVLOOKUPの式は変わる)

送り状

住所X
氏名Y

品物Z

...続きを読む

QExcelで条件が一致する場合、○印で表示する

Excelの関数についての質問です。

(列A)    (列B)   (列C)
相原久美子   相原久美子  ○
高橋 聡子   上田かなえ  ○
上田 かなえ  竹中聡美
武田 良子

列Bにデータを入力した際、列Aに同じものがあれば○を、
そうでなければ何もしないという関数を作成したいと思います。

今のところはCOUNTIF関数を使い、
=IF(COUNTIF($A$1:$A$4,B1)>0,"○","")
のように組んでいますが、氏名の間に空欄を含んだ場合の処理が
うまくいきません。

何か良い方法はありませんでしょうか。よろしくお願い致します。

Aベストアンサー

こんにちは
作業用セル列Dを作って列Aの空白を処理する例です。
D列に以下の関数を入れて空白を取り除きます。
=SUBSTITUTE($A1," ","")

C列に質問者さんの式を変形して入れます。
=IF(COUNTIF($D$1:$D$4,B1)>0,"○","")

Qあるセルに特定の文字列を打つと、他のセルに決められた文字が自動入力するように

お世話になります。

表題の通り、
あるセルに特定の文字列を打つと、
他のセルにあらかじめ決められた文字が自動入力するようにしたいです。

具体的に言うと、
(1)セル(A,1)に「キリン」と打ち込むと

   A   B   C   D
1 キリン
2
3
4

(2)1列目の B,C,Dに予め決めておいた文字が入力されるようにしたい

   A   B   C   D
1 キリン 首  長い  アフリカ
2
3
4

のです。
エクセルで可能でしょうか?
詳しい方よろしくお願いいたします!

Aベストアンサー

出来ます。この場合はキリンがキーになっていますね。
先ずこのキーをもとにSheet2にデータを登録しておきます。
   A   B   C   D
1 キリン 首  長い  アフリカ
2 ゾウ  鼻  長い アフリカ
3 
4
次に表示させたいセルに
 A   B             C           D
1  =VLOOKUP(A1,Sheet2!A:D,2) =VLOOKUP(A1,Sheet2!A:D,3) ″ 
2  =VLOOKUP(A2,Sheet2!A:D,2) =VLOOKUP(A2,Sheet2!A:D,3) ″
3  =VLOOKUP(A3,Sheet2!A:D,2) =VLOOKUP(A3,Sheet2!A:D,3) ″
4  =VLOOKUP(A4,Sheet2!A:D,2) =VLOOKUP(A4,Sheet2!A:D,3) ″

を入れておきます。
これで出来ると思います。
エラー表示がいやな場合は、=IF(A1="","",VLOOKUP(A1,Sheet2!A:D,2)) の様にして下さい。

出来ます。この場合はキリンがキーになっていますね。
先ずこのキーをもとにSheet2にデータを登録しておきます。
   A   B   C   D
1 キリン 首  長い  アフリカ
2 ゾウ  鼻  長い アフリカ
3 
4
次に表示させたいセルに
 A   B             C           D
1  =VLOOKUP(A1,Sheet2!A:D,2) =VLOOKUP(A1,Sheet2!A:D,3) ″ 
2  =VLOOKUP(A2,Sheet2!A:D,2) =VLOOKUP(A2,Sheet2!A:D,3) ″
3  =VLOOKUP(A3,Sheet2!A:D,2) =VLOOKUP(A3,Sheet2!A...続きを読む

Q(Excel)あるセルに文字を入力しただけで、同じブック内のほかのワークシートにも、同じ文字が自動的に入るようにするには?

こんにちは。
質問内容はタイトルのとおりです。

あるワークシートのあるセルに文字を入力すると、ほかのワークシートのセルにも同じ文字が自動的に書き込まれる方法を知りたいです(ブックは同じ)。複数のワークシートを制御するには、やはりマクロを使うのでしょうか?

よろしくお願いします。

Aベストアンサー

clam_chowderさん、こんにちは。

Sheet1のA1にたとえば「100」と入力しますね。
Sheet2のA1に、これと同じ数値を表示するには、
 =Sheet1!A1
でOKです。

数式をいれるのが苦手なら、
Sheet2のA1セルで「=」を入力すると、数式入力状態に入りますから、
ここでSheet1のシートタブをクリックし、
リンクしたいA1セルをクリックしてEnterすると、
自動的にさきほどと同じ式が入ります。

Qエクセルで年齢層に分ける計算式

エクセルで年齢を以下のように年齢層にわけたいと思います。
計算式を教えてください。

  A B ....
1 26
2 36
3 15
4 65

これらの年齢を年齢層に分けてBのところに計算式を組んで
入力したいのです。

  A  B ....
1 23 20-25
2 36 36-40
3 11 11-15
4 68 65-70

よろしくおねがいします。

Aベストアンサー

たとえばB列に
=ceiling(A1, 5)
とすると、10<A1<=15は15、15<A1<=20は20と階層化出来ます。それ
でいけると思いますよ。

Q【エクセル】指定したセルに入力することで、別の特定のセルに決まった文字を表示させるには?

社用データを作る際の手間を省こうとしたのに、かえって難しくなってしまいました(-"-;)
分かりにくい質問で恐縮ですが、よろしくお願いします。

現在Excel2003を使っています。
「指定したセルに文字・数字問わず入力があった場合、特定のセルに特定の文字を表示させる数式(または方法)」は無いでしょうか。
(できれば指定したセルに入力が無い限り、特定文字を表示させるセルは非表示のままにしたいと思っています)

例えば、「A1のセルに『○田×男(人名など)』と入力した時、B1のセルに『様』と表記させる」と言った具合です。
(このとき、A1に入力が無ければB1も空白のままにしておきたいのです)

手動で入力した方が早そうな気もしますが、応用次第で他の表や作業もスッキリしそうなので、手があれば是非ご教授下さい。

Aベストアンサー

間違えました。

B1 に
=IF(A1="","","様")

でした。


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング

おすすめ情報