• ベストアンサー

IF関数

職員名簿を作成していますが、各個人の名前を検索するとA1のセルに勤続年数が○年○ヵ月と表 示されますが、19年1ヵ月以上の年数が表示がされた場合は空欄にし、19年0ヵ月以下の年数が表示がされた場合はその通りに表示する関数式を教えてください。 IF関数でいろいろと試したのですができません。 詳しく教えてください。 現在A1セルには次の関数を入れています。 =IF(F9="","",INT((DATEDIF(F9,I1,"M")+1)/12)&"年"&MOD((DATEDIF(F9,I1,"M")+1),12)&"ヵ月")

質問者が選んだベストアンサー

  • ベストアンサー
  • don9don9
  • ベストアンサー率47% (299/624)
回答No.3

http://okwave.jp/qa/q8699248.html http://okwave.jp/qa/q8699368.html 同じような質問を何度かして、そのたびに内容が少しずつ変わっていますね。 ・A1セルの数式はF9セルを参照しているのかF11セルを参照しているのか ・A1セルの表示形式は「○年□ヵ月」なのか「○歳□ヵ月」なのか ・A1セルが「19年1ヵ月以上だと空欄」なのか「19年0ヵ月以下だと空欄」なのか など。 いろいろ試行錯誤している節が見受けられますが、状況が変わって新しく質問を投稿し直すのであれば、前の質問は締め切るようにして下さい。 そうでないと、新しい質問の存在を知らずに前の質問に回答する人が出てきてしまいます。 結果的にその回答者に無駄足を踏ませることになります。 今回の質問内容を踏まえて、あくまでA1セルの値(「○年□ヵ月」の文字列)のみを使った方法として、最初の質問で回答した式をアレンジしてみます。 =IFERROR(IF(LEFT(A1,FIND("年",A1)-1)*12+SUBSTITUTE(SUBSTITUTE(RIGHT(A1,4),"年",""),"ヵ月","")*1<=228,A1,""),"") 式の説明はもう詳しくは書きません。 A1セルの文字列から年数と月数を切り取って計算して、228ヵ月以下だったらA1セルの値を表示。 但しA1セルの値が「○年□ヵ月」の形式を満たしていない場合はエラーになるのでIFERROR関数でエラー回避。

HARA007
質問者

お礼

大変ご迷惑おかけしてすいません。初めての質問で不慣れでした。 上記の関数で質問内容がクリアできました。ありがとうがざいました。

その他の回答 (2)

  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.2

=IF(AND(0<F9,DATEDIF(F9,I1,"M")<229),DATEDIF(F9,I1,"Y")&"年"&DATEDIF(F9,I1,"YM")&"ヶ月","") とかで。 #DATEDIF関数は"M"以外にも使い方があるので、勉強してください。 http://kokoro.kir.jp/excel/datedif.html

HARA007
質問者

お礼

回答ありがとうございました。

  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.1

なんでExcelの質問をWindows7のカテゴリでするのかは置いておくとして…… 表示している文字ではなく、式中でも使っている勤続年数の計算「DATEDIF(F9,I1,"M")」を使います。 具体的には↓ =IF(OR(F9="",DATEDIF(F9,I1,"M")>227),"",INT((DATEDIF(F9,I1,"M")+1)/12)&"年"&MOD((DATEDIF(F9,I1,"M")+1),12)&"ヵ月")

HARA007
質問者

お礼

回答ありがとうございました。