[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『生年月日または年齢からです。』(さき)
教えてください。
下のような社員名簿があるとします。
1行目の日付の日に年齢が59歳1か月〜59歳11か月になる人にはD列に◎が入る方法はありますか?
1 日付
A B C D 2名前 生年月日 年齢 3名前 生年月日 年齢 4名前 生年月日 年齢 となっておりC列は1行目の日付とB列から求める関数がいれてあります。
< 使用 Excel:unknown、使用 OS:Windows10 >
D2 =IF(AND(DATEDIF(B2,$A$1,"Y")=59,DATEDIF(B2,$A$1,"YM")>0,DATEDIF(B2,$A$1,"YM")<12),"◎","")
|[A] |[B] |[C] |[D] [1]|2023/3/27| | | [2]|名前 |1960/1/1|63歳 | [3]|名前 |1964/1/2|59歳 |◎ [4]|名前 |1967/1/3|56歳 |
しっかり検証していないので合ってるかわかりません。
もっとスマートな式があると思いますので、識者の方をお待ちください。
(フォーキー) 2023/03/27(月) 22:37:56
フォーキーさんのレイアウトで
D2 =LOOKUP(DATEDIF(B2,$A$1,"m"),{0,709,720},{"","◎",""})
ところで、Excelのバージョンは? (笑) 2023/03/27(月) 23:12:58
>C列は1行目の日付とB列から求める関数がいれてあります。
その式を提示してください。
以上、確認だけ (笑) 2023/03/27(月) 23:17:51
先に言っておくと C列の式が =DATEDIF(B2,$A$1,"y") だったら
D2 =IF(C2<>59,"",IF(DATEDIF(B2,$A$1,"ym")>0,"◎",""))
参考まで (笑) 2023/03/27(月) 23:24:05
私が今作っていて困っているものそのまま掲載します。
B2 名前
C2 生年月日
D2 年齢 =DATEDIF(C2,$J$2,"y")&"."&DATEDIF(C2,$J$2,"ym")
J1 今日の日付(検索日)
L1 59.00(歳)
N1 59.11(歳)
E2 =IF(AND(D2>=$L$1,D2<=$N$1),"1",FALSE)
E2に該当する人を探して、該当者は1、該当しないものは無表示にしようと考えてました。
年齢までは表示されているのですが、E2欄はうまく振り分けできませんでした。
E2の公式がわかればうまくいくのかもしれません。
または、他が違っているかもしれませんが。
(さき ) 2023/03/28(火) 09:02:20
数値&数値の結果は文字列です 文字列と数値の比較は常に文字列>数値です DATEDIF(C2,$J$2,"ym") ↑が10未満だと二桁の文字列にして 59.02等にする必要が有ります (どん) 2023/03/28(火) 09:56:28
>D2 年齢 =DATEDIF(C2,$J$2,"y")&"."&DATEDIF(C2,$J$2,"ym") >L1 59.00(歳) >N1 59.11(歳)
1.D2は文字列です。分かっていますね?
あと、月数が1桁になる場合、59.01にはなりません。 =DATEDIF(C2,$J$2,"y")&"."&TEXT(DATEDIF(C2,$J$2,"ym"),"00") とすべきでしょう。
2.L1とN1は、数値なんですか、それとも文字列なんですか? それによって、◎判定式が変わります。
※年齢計算は「巷で言う満年齢」と「法律上の満年齢(誕生日前日で満)」は1日異なることがあります。 気にする必要もない処理ならいいですけども、念の為。
(半平太) 2023/03/28(火) 10:03:31
当初の対象者 >59歳1か月〜59歳11か月
↓ だったら >L1 59.00(歳) >N1 59.11(歳) >E2=IF(AND(D2>=$L$1,D2<=$N$1),"1",FALSE)
希望通りにならないとしても、考え方としては 59歳0か月〜59歳11か月、つまり59歳全員
どっちが正しいんですか?
59歳0か月〜59歳11か月が正しいのなら >D2 年齢 =DATEDIF(C2,$J$2,"y")&"."&DATEDIF(C2,$J$2,"ym") だとして
E2 =IF(INT(D2)=59,1,"")
参考まで (笑) 2023/03/28(火) 10:12:33
一応、確認
L1とN1の値は固定ではなく可変?
だとして、必ず○歳0か月〜○歳11か月なのか それとも 0か月、11か月の部分も可変なのか、どっちですか?
以上 (笑) 2023/03/28(火) 10:39:26
すみません。文字列というのを知りませんでした。
ごめんなさい。
L1、N1を文字列して試してみます
(さき ) 2023/03/28(火) 11:16:01
今回は(笑)さまの
=DATEDIF(C2,$J$2,"y")&"."&DATEDIF(C2,$J$2,"ym")
E2 =IF(INT(D2)=59,1,"")
で試したところ出来ました。
ありがとうございます。
一つだけ教えてください。
もし、これが半年区切り
59.0〜59.6
59.7〜59.11
としたい場合はどうすればできますか?
IF(INT(D2)=59,1,"")
1を0.6としてみたところできませんでした(涙)
(さき ) 2023/03/28(火) 11:49:35
>59.0〜59.6 >59.7〜59.11 対象は 59歳だけ?
だとしたら
D列の式が ↓ だとして >=DATEDIF(C2,$J$2,"y")&"."&DATEDIF(C2,$J$2,"ym") 59.0〜59.6 E2 =IF(AND(INT(D2)=59,DATEDIF(C2,$J$2,"ym")<7),1,"")
59.7〜59.11 E2 =IF(AND(INT(D2)=59,DATEDIF(C2,$J$2,"ym")>6),1,"")
■D列の式を ↓ にできるのなら D2 =IF(C2="","",DATEDIF(C2,$J$2,"y")&"."&TEXT(DATEDIF(C2,$J$2,"ym"),"00"))
59.0〜59.6 E2 =IF(AND(D2>="59.00",D2<="59.06"),1,"")
59.7〜59.11 E2 =IF(AND(D2>="59.07",D2<="59.11"),1,"")
D列は文字列なので、"59.00" のように数字を "" で囲む
以上 (笑) 2023/03/28(火) 13:20:47
半年区切りだったら 59.0〜59.5 59.6〜59.11 では?
ついでに・・・ 59.0〜59.5 → 1 59.6〜59.11 → 2 にしたいんだったら
D列の式が ↓ だとして >=DATEDIF(C2,$J$2,"y")&"."&DATEDIF(C2,$J$2,"ym")
E2 =IF(INT(D2)<>59,"",IF(DATEDIF(C2,$J$2,"ym")<6,1,2))
参考まで (笑) 2023/03/28(火) 13:49:58
本当に助かりました。
明日、報告してきます(笑)
ありがとうございました
また助けてください
よろしくお願いいたします
(さき ) 2023/03/28(火) 21:16:15
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.