アプリ版:「スタンプのみでお礼する」機能のリリースについて

セルに生年が入っています。たぶんテキストで S63.01.01 という風に入っています
例 A1にS63.01.01 B1にtoday()-A1 ではうまくできません
どのようにするのが良いでしょうか?

質問者からの補足コメント

  • たくさんの方々から詳しい説明ありがとうございました
    いずれも詳しい説明でBA選ぶのに困りますが最初に返事をいただいた方に
    決めさせていただきました

      補足日時:2023/06/05 18:14

A 回答 (8件)

年齢を出すには、datedif関数ですよ。


生年月日(1980/7/5)から本日(TODAY())までの満年齢("y")を求めたい時は?

=DATEDIF(A1,TODAY(),"y")
    • good
    • 0
この回答へのお礼

さっそくありがとうございます
うまくいきました。が#VALLUE?が出るところが
あり?と思ったら2/29だけはうまくいきませんでした。

お礼日時:2023/06/01 10:48

文字列だったら、DateValue()で日付値に変換してみるとか。

「エクセルで年齢の計算」の回答画像2
    • good
    • 0
この回答へのお礼

さっそくありがとうございます
なるほどです。

お礼日時:2023/06/01 10:47

良かったです。


s63でなく西暦にすることを伝えるのを忘れました( ノД`)シクシク…
    • good
    • 0
この回答へのお礼

ありがとうございます。
そのままでやってみたらできました
西暦にしなくてもよいみたいでした。

お礼日時:2023/06/01 12:28

別に西暦に修正しなくてもできるはずですよ。


2/29でエラーが出るなら、それはうるう年じゃないのでは?
    • good
    • 0
この回答へのお礼

ありがとうございます。
そのままでできました。
やはり うるう ではないようですね。。。

お礼日時:2023/06/01 12:30

=text(today()-A1,"yy")

    • good
    • 0
この回答へのお礼

ありがとうございます
これでやってみました。
No1の方の方法と1才少なく表示されるところが
あります?
現在の5月か6月生まれかが影響しているのかな???
他の部分は同じです?

お礼日時:2023/06/01 12:39

確認させてください。


》 たぶんテキストで S63.01.01 という風に入っています
私の Excel 2019 のセルに、貴方が書かれた「S63.01.01」の部分をコピーして貼り付けたら、日付として認識され[数式バー]上では 1988/1/1 を呈しますよッ!
貴方が「たぶんテキストで」とした理由/根拠を教えてください。
なぜ単に「テキストで」でなく「たぶん」を付加したのですか?

ちなみに、私の環境は次の通りです。
Win10 Pro Ver.22H2 (19045.3031)
Excel 2019 MSP (バージョン 2304 ビルド 16.0.16327.20200) 32 ビット
    • good
    • 0
この回答へのお礼

ご検討ありがとうございます。
そうですね。新しいBOOKでS63.06.01と入れると
数式バーに1988/6/1と表示されますね。。
なるほど自動でなるのですね。
たぶんとは
そのセルの書式設定を見ると「文字列」となっていましたので
テキストだと思いました。数式バーにはS63.06.01と表示されています
したがって関数で計算できないのかなって思いました。
自分で作った表ではないのであまりいじりたくなかったのです。。

お礼日時:2023/06/01 16:55

[No.6お礼]へのコメント、


》 書式設定を見ると「文字列」となっていましたので
》 テキストだと思いました
その判断が実は怪しい例を挙げておきます。

セル A1、A2 に数値 1、2 を入力したとき、式 =A1+A2 あるいは =SUM(A1:A2) を入力した セル A3 の戻り値は 3 を呈しますよね?何れの数値もセルの右寄りにありますよね?
貴方が余所見(ヨソミ)をしているときに、私がセル A3 の「書式設定」を「文字列」にしたとします。(^_^)
セル A3 の数値のみセルの左詰めになっていることに貴方は気付き、「書式設定を見ると」なるほど「文字列」となっています。

でもその現象、実は嘘っぱちですよね?なぜなら、“本当に”「文字列」なら
セル A3 は、=A1+A2 あるいは =SUM(A1:A2) でなければならないから。
    • good
    • 0
この回答へのお礼

ありがとうございます
A3セルの書式をあらかじめ「文字列」にしておけば
式を入力しても式が表示されますね(数式バー内も)

エクセルもなかなか奥深いですね。
注意しながら使う必要がありますね。ありがとうございました。

お礼日時:2023/06/02 13:06

1900年1月1日を1とし、以降1日経過ごとに1を加算して日数を数値にしたものが日付のシリアル値です。

EXCELの日付計算はシリアル値をもとに計算されます。

No.5さんの回答にある

=text(today()-A1,"yy")

という数式はTODAY()つまり今日のシリアル値(a)から誕生日のシリアル値(b)を引き算した結果のシリアル値(c)を求めていることになります。

一見正しいことをやっているように見えますが、前述のとおり、シリアル値は1900年1月1日を1としたときの日数ですから、1900年1月1日から(c)日経過した日付の年号を求めていることになり、厳密な意味の「年齢」になりません。その人が誕生してから今日までの日付構成と1900年1月1日から(c)日間の日付構成が一致しているとは限らないからです。(4年に一度の閏年や100年に一度の例外、400年に1度の例外の例外があります)

添付画像①をご覧ください。
A1セルに「S63.06.01」を入力し、B1セルに=TEXT(TODAY()-A1,"yy")を入力しています。本日が2023/6/2だとすると、「35」歳となって欲しいわけですが、B1セルは「34」と表示されています。

このように実際の年齢との相違が発生してしまいます。

やはり、年齢を計算する場合の標準的手法はNo.1さんの回答にある、DATEDIF関数を使用する方法だと思います。添付画像②をご覧ください。B2セルに

=DATEDIF(A2,TODAY(),"Y")

という数式を入れています。B1セルの数式とは異なり、正しい年齢「35」が表示されます。

No.7さんが、日付に見えているものが「テキスト」なのか「シリアル値」なのかを気にする投稿をされています。確かに、EXCELで日付を扱うとき、「テキスト」なのか「シリアル値」なのかは重要な問題です。

ただ、DATEDIF関数に於いては、No.4さんの回答にあるとおり、シリアル値でも文字列でも計算してくれるという機能がありますのでDATEDIF関数をし使用する限りにおいては気にしなくてよいということになります。

しかし、DATEDIF関数はEXCELの公式サポート関数ではないので、「=DATEDIF(」と入力しても数式ガイドが表示されません。これらの機能を予め承知しておく必要があるということです。
「エクセルで年齢の計算」の回答画像8
    • good
    • 0
この回答へのお礼

詳しく解説ありがとうございます。
エクセルはなかなか奥深いことがわかりました。簡単な計算のようですが
色々例外のある場合などを考えておかないといけないですね。
ありがとうございました。

お礼日時:2023/06/03 14:34

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