• ベストアンサー

関数

職員名簿を作成していますが、各個人の名前を検索するとA1のセルに勤続年数が○年○ヵ月と表 示されますが、それをB1セルに19年1ヵ月以上の年数が表示がされた場合は空欄にし、19年0ヵ月 以下の年数が表示がされた場合はその通りに表示する関数式を教えてください。 IF関数でいろいろと試したのですができません。 詳しく教えてください。

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

  • ベストアンサー
  • marumets
  • ベストアンサー率42% (199/463)
回答No.2

B1に、 =IF((DATEDIF(F11,I1,"Y")+DATEDIF(F11,I1,"YM")/12)>19,"",DATEDIF(F11,I1,"Y")&"歳"&DATEDIF(F11,I1,"YM")&"ヵ月") で、どうでしょうか?

HARA007
質問者

お礼

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

その他の回答 (3)

  • bunjii
  • ベストアンサー率43% (3589/8249)
回答No.4

質問および補足の文言からA1セルの値が文字列であることが分かりました。 従って、A1セルの値から年数と月数部分を切り出して数値化すればIF関数とAND関数の組み合わせで正しい処理ができます。 文字列の一部を切り出すにはLEFT関数、MID関数、FIND関数を使うと分かり易いでしょう。 B1=IF(AND(LEFT(A1,FIND("歳",A1)-1)*1>=19,MID(A1,FIND("歳",A1)+1,FIND("ヵ",A1)-FIND("歳",A1)-1)*1>0),"",A1) 尚、Excelのバージョンが提示されていないのでエラー処理については別途考慮してください。

HARA007
質問者

お礼

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

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.3

こんばんは! No.1さんのお礼欄に >A1のセルには次の関数で年数を表示しています。 >=IF(F11="","",DATEDIF(F11,I1,"Y")&"歳"&DATEDIF(F11,I1,"YM")&"ヵ月") とありますので、I1・F11のシリアル値を使用する方法です。 B1セルに =IF(YEAR(I1)*12+MONTH(I1)-(YEAR(F11)*12+MONTH(F11))>19*12,"",A1) でも大丈夫だと思います。m(_ _)m

HARA007
質問者

お礼

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

  • DJ-Potato
  • ベストアンサー率36% (692/1917)
回答No.1

まさか、その勤続年数というのは、数値ではなく文字列として入力されているのですか? それだと、そうとうめんどいですよ。 勤続年数ではなくA1に入職年月日をいれ、TODAY()との差で評価するとか。

HARA007
質問者

お礼

ありがとうございます。補足A1のセルには次の関数で年数を表示しています。  =IF(F11="","",DATEDIF(F11,I1,"Y")&"歳"&DATEDIF(F11,I1,"YM")&"ヵ月")

関連するQ&A