【お知らせ】まとめて検索などの提供終了

こんにちわ。

ExcelでIF関数を重複させ(IFの中にIF)、和暦(昭和等)を西暦に変更する関数を作っています。
和暦は昭和、平成のみで、昭和50年ならば昭50のように打ち込み、

=IF(FIND("昭",A1),SUBSTITUTE(A1,"昭",)+1925,IF(FIND("平",A1),SUBSTITUTE(A1,"平",)+1989,))

このように昭和、平成を判断して西暦に変換しようとしています。
が、この関数では昭和の変換はできますが、平成の変換(平23→2011等)を試すと
#value!エラーとなってしまいます。

調べたのですがエラーの原因がわかりません。
どなたかご教示ください。
よろしくお願いします。

「Excel IFの重複 #value!エ」の質問画像

このQ&Aに関連する最新のQ&A

A 回答 (8件)

FINDでなくCOUNTIFを使用すれば


=IF(COUNTIF(A1,"昭*"),SUBSTITUTE(A1,"昭",)+1925,IF(COUNTIF(A1,"平*"),SUBSTITUTE(A1,"平",)+1989,))

昭和、平成でいいなら、こういう方法もあります。
=YEAR(DATEVALUE(SUBSTITUTE(SUBSTITUTE(A1,"昭","S"),"平","H")&"/4/1"))
    • good
    • 0

(1)質問者が自分の質問するまでやっていた路線と違うことを言うので気に食わない化も知れないが


(2)A1セルに入っているデータ例が書いてないので、正確にいえないが(「質問するなら、データ例を書くものだ)
こういうIF関数で、日付を場合分けして、年号入りのデータを西暦にするのは馬鹿げている。
いかにエクセルが日付の扱いで背後で苦労しているかいつも私は思っている。(閏年、月の大小、曜日、年号の変わり目など複雑になる要素はいっぱいだから)
それを初心者が自分でプログラム的なことを関数で実現しようなどというのは、その難しさを知らないからだ。プログラムを組める人がいたら、聞いてみるがよい。プログラムは大変長くなりテストも必要になる。
ーー
A1に平成12年11月12日と文字列であった場合
数式バー部に2000/11/12と出ていたら、日付シリアル値で入っているということで、西暦にしたければ、セルの書式設定で
2001年3月14日のアイテムを選ぶ。もし西暦文字列にしたければ、=TEXT(A1,"yyyy年mm月dd日") と入れる。
ーー
'平成12年11月12日のように文字列で入っている場合は、=DATEVALUE(A1)で日付シリアル値になるから、セルの表示形式で西暦初諸式を設定すれば良い。
文字列にしたければ、=TEXT(A1,"yyyy年mm月dd日") 
で良い
ーー
上記では目的を達せられませんか。
昭21年11月20日とでもなっているのかな。
年月日の数字は全角でも、日付シリアル値に変えてくれるようだ。
もちろん1900年以後に当たる年号と年の場合ですが。
    • good
    • 0

別解として、



=MID(A1,2,2)+1925*(LEFT(A1,1)="昭")+1988*(LEFT(A1,1)="平")
    • good
    • 0

一例です。


最初のFINDで既にエラーになります。
=IF(SUM(COUNTIF(A1,{"昭*","平*"})),以下はSUBSTITUTEの数式)
    • good
    • 0

回答1,2です。


IF関数を重複して使っていますね。最初のIFでエラーになってしまっては全体がエラーとなりますが、最初のIFで正しい答えとなればエラー表示はされません。そのため昭のあるデータについては最初のIFの条件に合っていますので正しい答えが得られるのです。平のデータでは最初のIFでエラーとなりますので全体がエラーとなってしまいますね。
    • good
    • 0

>平成の変換(平23→2011等)を試すと



しょっぱなの「FIND("昭",A1)」の部分を別セルに書き出して計算させてみると判りますが,このエラーが続き全てを圧して#VALUEの原因になっています。

教科書的な定石としては
IFERROR(FIND("昭",A1))
のようにして,昭があっても「なくても」エラーだけは出さないように組み立てます。


計算例:
=IF(ISNUMBER(FIND("昭",A1)),SUBSTITUTE(A1,"昭","")+1925,IF(ISNUMBER(FIND("平",A1)),SUBSTITUTE(A1,"平","")+1989,"OTHER"))
    • good
    • 0

回答1ですが平成の時の1989は1988に直すことが必要でしょう。



=IF(NOT(ISERROR(FIND("昭",A1))),SUBSTITUTE(A1,"昭",)+1925,IF(NOT(ISERROR(FIND("平",A1))),SUBSTITUTE(A1,"平",)+1988,))
    • good
    • 0

FIND関数はその文字がない場合にはエラー表示になります。


次のようにすればよいでしょう。

=IF(NOT(ISERROR(FIND("昭",A1))),SUBSTITUTE(A1,"昭",)+1925,IF(NOT(ISERROR(FIND("平",A1))),SUBSTITUTE(A1,"平",)+1989,))
    • good
    • 0

このQ&Aに関連する人気のQ&A

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


人気Q&Aランキング