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

エクセル365の関数の質問です。

外部から納品されたリストの誕生日を、別のリストへ読み込むと、誕生日とは違う数字の羅列になってしまうので下記の関数を利用して読み込みました。

=text(a1,"yyyy年m月d日")

これで問題ないかとチェックしていると、西暦がおかしい人が混ざっていました。
「1905年」や「2022年」や「1900年」だったりして、元のファイルを見てみると「1948」(西暦のみ入力)や、「2/18」(入力者の意図としては西暦不明で月日のみ入力。エクセル上は2022年2月18日の扱い)、もしくは空欄のものになっていました。

2022年生まれの人は現在はリストに含まれていませんが、来年からは含まれてくると思います。
IF関数を使って空欄だけならなんとかなったんですが、ほかの2ケースの場合にどうすればいいか皆目見当がつきません。

このような生年月日が揃っていないものについては、空欄で返すような関数はないでしょうか?
詳しい方、助けて頂けると有難いです、宜しくお願いします。

A 回答 (2件)

No.1の回答の書き忘れ



> このような生年月日が揃っていないものについては、空欄で返すような関数はないでしょうか?

ここ、意味がわからなくて、入力値に合わせて表示形式を変える式を提示してしまいましたが・・・
「年」「月」「日」の3つが揃っていないもの、と解釈するなら、

=IF(A1="","",IF(A1<2672,"",TEXT(A1,"yyyy年m月d日")))

だけでいいかも。

2672は、最高齢者の誕生日1907/4/25に該当します。
なので、月日のみの入力は最大でも365なので空白返しだし、
西暦のみの入力も2672年以下ですから空白返しになりますね。
    • good
    • 1
この回答へのお礼

ご回答ありがとうございます。
おかげさまで、無事にできました。
とても助かりました。

お礼日時:2022/10/18 18:28

どういう形式で納品されて、どういう方法で読み込んでいるのかわからないけど、


年だけ、月日だけでもいいのであれば、誕生日列を初めから「文字列」として読み込んでしまうのもアリだと思いますが。

実際にどういう状態になってるかわかりませんが、こちらの式を試してみて下さい、

=IF(A1="","",IF(A1<366,TEXT(A1,"m月d日"),IF(A1<2022,A1&"年",TEXT(A1,"yyyy年m月d日"))))

=IFS(A1="","",A1<366,TEXT(A1,"m月d日"),A1<2022,A1&"年","TRUE",TEXT(A1,"yyyy年m月d日"))
「365」ならIFS関数も使えると思いますが、古いバージョンでも開くならIF関数の方がいいでしょう。

式の中身は…

①空白だったら空白

②366より小さければ「月日」のみ表示
単純に日付だけ入力されている場合、1900年の日付になってしまってると思うので、366日(1901年1月1日)より前の数字の場合は年を表示させません。

③2022より小さければ、西暦と扱い「年」として表示。
2022という数値を日付に直すと1905/7/14なので、1905/7/14以前の生まれの人の誕生日が正しく入力されていても、誕生日ではなく「2022年」等と表示されてしまいます。
生存されている方だけが対象となっているのであれば、問題ないでしょう。
(現在の最高齢は1907年生まれの方なので影響なし)

④ここまでの"ふるい"を抜けてきたものは、晴れて年月日を表示。

…と、こんな感じにしたつもりです。
    • good
    • 0

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