- ベストアンサー
エクセルで月末を求める関数
DAY(DATE(1980,MOD(A1/100,100)+1,0)) A1には、290200と入っています。 上記の式だと2月以外はきちんと表示されるのですが 290200(29年02月00日) の場合、式をいれた箇所には29と表示されてしまいます なぜでしょう? どこを直せばいいのでしょうか・・・。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
No1です。 先頭にDAY関数が抜けていました。 =DAY(DATE(1988+LEFT(A1,2),MOD(A1/100,100)+1,0)) です。 失礼しました。
その他の回答 (4)
- Nouble
- ベストアンサー率18% (330/1783)
=EOMONTH(DATE(FLOOR(YEAR(TODAY()),100)+VALUE(LEFT(A1,2),VALUE (MOD(A1,2,2)),VALUE(RIGHT( A1,2)),0) =DATE(DATE(FLOOR(YEAR(TODAY()),100)+VALUE(LEFT(A1,2),VALUE (MOD(A1,2,2))+1,0) 此では、駄目です?
お礼
ありがとうございます
- intin
- ベストアンサー率33% (8/24)
他の方も書かれていますが、1980年固定で計算してしまっているので、2月の場合には常に29日が表示されるのでしょうね。 計算式としては、文字列系関数を使うのであれば、 =DAY(DATE(1988+LEFT(A1,2),MID(A1,3,2)+1,0)) あるいは、数値計算系関数を使うのであれば、 =DAY(DATE(1988+INT(A1/10000),MOD(INT(A1/100),100)+1,0)) というのが綺麗だと思います。 ※計算結果に影響はでないと思いますが、意味合い的には、 MOD(A1/100,100)+1 ではなく、 MOD(INT(A1/100),100)+1 のほうが、いいと思います。
お礼
ありがとうございます。 締切と同時に回答を送信してくださったみたいで、お返事が間に合いませんでした。 文字列系とか数値計算系とかあるのですね。 その言葉は初めて知りました。参考になります。
- chie65536(@chie65535)
- ベストアンサー率44% (8742/19840)
>式をいれた箇所には29と表示されてしまいます >なぜでしょう? 1980年3月1日の前日は「1980年2月29日」だからです。 >どこを直せばいいのでしょうか・・・。 年を1980年固定にしないで、A1の上2桁の「29」に1988を足して「西暦年」を作って、それを「年」に指定します。 =DAY(DATE(INT(A1/10000)+1988,MOD(A1/100,100)+1,0)) こうすると、 290200→28 300200→28 310200→28 320200→29(平成32年はうるう年なので2月は29日まで!) 330200→28 のように、うるう年をきちんと判断して計算します。
お礼
ありがとうございます。
- tamao-chi
- ベストアンサー率52% (457/875)
>DAY(DATE(1980,MOD(A1/100,100)+1,0)) これだと1980年固定です。 29が平成で、入力した年で出すなら =DATE(1988+LEFT(A1,2),MOD(A1/100,100)+1,0) とか。
お礼
ありがとうございます
お礼
ありがとうございます。 すみません。どちらも正解でわかりやすいので、ベストを決められず 最初に回答してくださった方に・・・・。