重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

ある決まりで構成されている文字列を、Left、Mid、Right関数で抜き出し、Date関数で日付に変換しております。
しかし日付としては異常な数字があっても、エクセルの場合シリアルですので、異常な値でも日付に変更してしまいます。
エラーが出て異常がわかる方法ないでしょうか。
日付の部分が31以上だとNGという方法もあるとは思いますが、アクセスのようにエラーが出てほしいです。


正しい:MA08⇒2000/10/8
間違い:MA80⇒しかし2000/12/19と表示される。#VALUE!など間違いということがわかる方法が理想。

A 回答 (4件)

Date関数の引数は、13月や52日のようなケースでもシリアル値に変換してしまいますので、ご質問のような状況が発生します。



あり得ない年月日が出たらエラーを表示したいなら、現在の数式部分をそのまま利用して、以下のような数式に変更するのが簡単かもしれません。

=(年を取得する数式&"/"&月を取得する数式&"/"&日を取得する数式)*1
    • good
    • 0
この回答へのお礼

この方法がいちばんシンプルのような気がします。
ありがとうございました。

お礼日時:2014/02/14 17:20

 「MA」が何故2000年の10月の日付である事を表す事になるのかは解りませんが、2000年の10月の日付としてあり得るのか否かを判定するだけでしたら次の様な方法は如何でしょうか?(「MA08」等の元の文字列がA1セルに入力されている場合)



=IF(A1="","",IF(ISNUMBER(("2000/10/"&RIGHT(A1,2))+FIND("MA",A1)),("2000/10/"&RIGHT(A1,2))+0,"変換不能"))
    • good
    • 0
この回答へのお礼

ISNUMBERは初めてです。やってみます。

お礼日時:2014/02/14 17:19

>日付の部分が31以上だとNGという方法もあるとは思いますが、アクセスのようにエラーが出てほしいです。


ACCESSではどのようなエラーが出るのでしょうか?

数式が書かれていないので、どのように変換しているかわかりませんが
=IF(RIGHT(A1)*1<>DAY(変換の式),"ACCESSのようなエラー",変換の式)
としてみては?
    • good
    • 0
この回答へのお礼

ありがとうございます。試してみます。

お礼日時:2014/02/14 17:17

その"ある決まりで構成されている文字列"や、"Date関数で日付に変換しております"の式などを質問文で書かないとどういうやり方をされているのかがわからず具体的な回答のしようがないと思います。



とりあえず、文字列から年、月、日をそれぞれ抜き出してDate関数の引数として渡す前にIF文などでエラーチェックするようにしてみればいかがですか。
もしくは、入力時に判断できる間違いならば、入力規則などで間違った値を入力させない方法はありませんか。
    • good
    • 0
この回答へのお礼

推測が付く範囲で結構でした。
情報ありがとうございました。

お礼日時:2014/02/14 17:17

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