- ベストアンサー
関数
職員名簿を作成していますが、各個人の名前を検索するとA1のセルに勤続年数が○年○ヵ月と表 示されますが、それをB1セルに19年1ヵ月以上の年数が表示がされた場合は空欄にし、19年0ヵ月 以下の年数が表示がされた場合はその通りに表示する関数式を教えてください。 IF関数でいろいろと試したのですができません。 詳しく教えてください。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
B1に、 =IF((DATEDIF(F11,I1,"Y")+DATEDIF(F11,I1,"YM")/12)>19,"",DATEDIF(F11,I1,"Y")&"歳"&DATEDIF(F11,I1,"YM")&"ヵ月") で、どうでしょうか?
その他の回答 (3)
- bunjii
- ベストアンサー率43% (3589/8249)
質問および補足の文言から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のバージョンが提示されていないのでエラー処理については別途考慮してください。
お礼
回答 ありがとうございました
- tom04
- ベストアンサー率49% (2537/5117)
こんばんは! 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
お礼
回答ありがとうございました。
- DJ-Potato
- ベストアンサー率36% (692/1917)
まさか、その勤続年数というのは、数値ではなく文字列として入力されているのですか? それだと、そうとうめんどいですよ。 勤続年数ではなくA1に入職年月日をいれ、TODAY()との差で評価するとか。
お礼
ありがとうございます。補足A1のセルには次の関数で年数を表示しています。 =IF(F11="","",DATEDIF(F11,I1,"Y")&"歳"&DATEDIF(F11,I1,"YM")&"ヵ月")
お礼
回答 ありがとうございました。