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

 EXCELのIF関数についての質問です。
 IF関数については、自信がありました。
たとえば、G13をテストの得点だとして、80点よりも高い得点なら合格、さもなければ不合格と表示させてければ、if(G13>80,"合格","不合格")でOKのはずです。
 ところが、今日何歳なのかを表示させる場合、G13に生年月日をいれて、
IF(OR(MONTH(TODAY())>MONTH(G13),AND(MONTH(TODAY())=MONTH(G13),DAY(TODAY())>=DAY(G13)))=TRUE,YEAR(TODAY())-YEAR(G13),YEAR(TODAY())-YEAR(G13-1))と引継ぎをうけました。
 この中にあるTRUEの意味がわかりません。私の解釈では、「今日の月が誕生月よりも絶対値が大きい」又は「今日の月と誕生月が同じで、今日の日が誕生の日の絶対値と同じか多い」場合、年齢は「今日の年」-「誕生の年」、そうでない場合は年齢は「今日の年」-1-「誕生の年」です。
 なので、TRUEはなくてもよいと思い、削除してみましたが、エラーが出ました。
 よくわからないので、お手数ですが、教えてください

A 回答 (5件)

> EXCEL2000を使用していますが、挿入→関数→すべてを表


> 示で確認するのですが、見当たりません。

そこにはありませんよ。これはMS-DOS時代に表計算ソフトの代表格
だったLotus 1-2-3と互換性を持たせるために、内緒で搭載されてい
る関数ですから、ヘルプの方で日付/時刻関数一覧を出さないと載っ
てません。月数の計算に関してはバグがあるので要注意ですが、年
齢計算くらいには充分使えます。

ちなみにdatedif関数を使わない場合でも、
=year(today())-year(G13)-(text(G13,"mmdd")>text(today(),"mmdd"))
くらいにはシンプルになります。同じことをif関数を使って
=year(today())-year(G13)-if(text(G13,"mmdd")>text(today(),"mmdd"),1,0)
と書くこともできます。日本語で言うと「基本は今年の年-誕生年だ
けど誕生日がまだ来てないっぽかったらもう1年引く」ですね。
    • good
    • 0

>この中にあるTRUEの意味がわかりません。


TRUEは条件が真であるという意味なのでこのIF文では不要ですね。
OR(MONTH(TODAY())>MONTH(G13),AND(MONTH(TODAY())=MONTH(G13),DAY(TODAY())>=DAY(G13))
)=TRUE
条件部分は上記の式の部分で
OR(現在月が誕生月より後,AND(現在月が誕生月,現在日は誕生日以降))が真
という意味になります。
まあ確かに不要ですね。式を否定して真偽を入れ替えるのにFALSEを使うのならまだわかりますけど...

>TRUEはなくてもよいと思い、削除してみましたが、エラーが出ました。
No.1の方の言われるようにTRUEを削除する場合は=も一緒に削除が必要です。

>そうでない場合は年齢は「今日の年」-1-「誕生の年」です。
YEAR(TODAY())-YEAR(G13-1)
では言われるような結果になりません。
YEAR(TODAY())-YEAR(G13)-1の間違えでは?
    • good
    • 0
この回答へのお礼

落ち着いてやり直したらうまくいきました。ありがとうございました

「YEAR(TODAY())-YEAR(G13)-1の間違えでは?」もご指摘のとおりでした。ありがとうございました。

お礼日時:2010/06/07 23:28

久々に見る迂遠な式ですね。

削除するなら「TRUE」だけじゃなくて
「=TRUE」ですが、そこは大丈夫ですか。year(G13-1)はもちろん書
き間違いのはずですが。

ちなみに同じ意味の式は、
=datedif(G13,today(),"Y")
と書きます。
    • good
    • 0
この回答へのお礼

ありがとうございました。「datedif」という関数ははじめて見ました。EXCEL2000を使用していますが、挿入→関数→すべてを表示で確認するのですが、見当たりません。こんな便利な関数、どこでお知りになられてんですか?

お礼日時:2010/06/07 23:36

ご質問のように提示された数式は「=TRUE」の部分が無駄な判定式になっています。



もし「=TRUE」を削除してエラーが出るならそれ以外の原因が考えられます。
具体的にどのようなエラーが表示されるのでしょうか?

エラーが出る可能性としてはYEAR(G13-1)の部分にあるように思いますが、たとえばG13セルが空白ということはないでしょうか?
    • good
    • 0
この回答へのお礼

落ち着いてやり直したらうまくいきました。ありがとうございました。

お礼日時:2010/06/07 23:26

TRUEを消す:


=IF(OR(MONTH(TODAY())>MONTH(G13),AND(MONTH(TODAY())=MONTH(G13),DAY(TODAY())>=DAY(G13))),YEAR(TODAY())-YEAR(G13),YEAR(TODAY())-YEAR(G13-1))

理解なさっている内容は合ってます。不要な内容です。


>TRUEはなくてもよいと思い、削除してみましたが、エラーが出ました。

単純な編集ミスと思います。落ち着いてもう一度試してみてください。
「=TRUE」を削ります。
    • good
    • 0
この回答へのお礼

落ち着いてやり直したらうまくいきました。ありがとうございました。

お礼日時:2010/06/07 23:25

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