• ベストアンサー

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/7940)
回答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
質問者

お礼

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

関連するQ&A

  • 関数

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

  • エクセル関数

    職員名簿を作成しています。そこで、勤続年数がA1のセルに表示されます。それをB1のセルに19年0ヵ月以下の年数が表示されたら空欄にし、19年1ヵ月以上の年数が表示されたら、その年数を表示する関数を教えてください。

  • if関数について

    if関数についてどなたか教えてください。 ある二つの名簿があって、二つの名簿を照合して名寄せをしたいのですが、たとえば、A列の1行目から10行目まで、同じくB列の1行目から10行目まで氏名が入っているとします。A列とB列に同じ名前が入っていれば、C列に○印をつけるように関数を設定したいのです。自分なりに考えて、次のようにif関数を設定しました。・・・がうまく表示されません。エラーは出ませんので、関数としては成り立っていると思うのですが、○印が表示されません。どなたか間違いを指摘いただけませんでしょうか? C1のセルに次の関数を設定して、C10までコピーをしました。 if(A1=$B$1:$B$10,”○”,””) よろしくお願いいたします。

  • エクセルのIF関数を教えてください

    もし、A1のセルがキリンなら1000、ウサギなら3000、パンダなら5000、何も入っていなければ空欄をA2のセルに表示しなさいという関数を教えてください。 IF(A1="キリン","1000",IF(A1="ウサギ","3000",A1="パンダ","5000","")) でやったらエラーが出てしまいました。お手上げです。 よろしくお願いします。

  • IF関数についてです

    A2のセルには=T26-B41の引き算されるようになっています。 その引き算の結果が0の場合、空欄と表示されます。 C2のセルに=IF(A2="","","○")と入れています。A2が空欄だと○と表示されないようにしているのですが空欄でも○と表示されます。なぜなのでしょうか?

  • エクセル2003 関数 IFとVlookupの組み合わせについて

    エクセル2003 関数 IFとVlookupの組み合わせについて IF関数とvlookuo関数を組み合わせて関数を組もうとしています。 vlookupしたい元データが18万あるのでシートを(1)~(3)に分けています。 やりたいことは、 シート「(1)1~60,000」     A列:ID B列:社名 シート「(2)60,001~120,000」 A列:ID B列:社名 シート「(3)120,001~180,000」 A列:ID B列:社名 シート「集計」 このシートに関数の結果を表示したいです シート「集計」のH9のセルにIDを入れたらI9のセルに社名が自動表示される。且つH9のセルが空欄ならI9のセルも空欄になる。※入るIDはシート(1)~(3)のどこかにあります 関数教えて下さい。よろしくお願いします。

  • EXCELのIF関数の入れ子について

    すみませんよろしくお願いします。 EXCELでセル(A1)~(L1)までに不特定の文字列が入力されており、(M1)に「もし(L1)が入力されていたら(L1)の値を表示、もし(L1)がブランクなら(K1)の値を表示、もし(K1)がブランクなら(J1)の値を表示、もし(J1)がブランクなら(I1)の値を表示・・・・」といった具合で関数を作成したいのです。また、(A1)~(L1)のセルで穴あき状態で入力されていた場合は最も(L1)寄りのセルを表示させたいです。 EXCEL2003のIF関数だと、 =IF(L2="",IF(K2="",IF(J2="",IF(I2="",IF(H2="",IF(G2="",IF(F2="",IF(E2="","",E2),F2),G2),H2),I2),J2),K2),L2) で最後の(A1)までの入れ子を作ることができせん。 EXCEL2007を使用すると、 =IF(L2="",IF(K2="",IF(J2="",IF(I2="",IF(H2="",IF(G2="",IF(F2="",IF(E2="",IF(D2="",IF(C2="",IF(B2="",IF(A2="","",A2),B2),C2),D2),E2),F2),G2),H2),I2),J2),K2),L2) と作成できます。 EXCEL2003で作成するいい方法はありますでしょうか? ご指南の程よろしくお願いします。

  • エクセルのIF関数について

    いつもお世話になります。 エクセルのIF関数について教えてください。 Aシートを入力用のシートとして使用し、別のシートに上記のIF関数を使いたいと思っています。 (1)AシートのAF15番地に数字があればその数字を返し、空欄であれば0を返す。  なおAF15番は元々は空欄で、数字を入れる場合は入力者は手動で数字を入れます。 (2)AシートのR26番地に※があれば1を返し、空欄であれば0を返す。  なおR26番地にはプルダウンリストをあらかじめ作成してあり、※か空欄かの2択になっています。 (3) 上記の(1)と(2)の合計値を別のシートのセルに返す。 【例1】AF15番地に3と入力して、R26番地は※を選択  ⇒ 4と表示 【例2】AF15番地は空欄のままで、R26番地は※を選択  ⇒ 1と表示 【例3】AF15番地に1と入力して、R26番地は空欄を選択 ⇒ 1と表示 【例4】AF15番地が空欄のままで、R26番地は空欄を選択 ⇒ 0と表示 私は、このように作ってみたのですが、エラーが出てしまいます。  =(IF(Aシート!AF15="","0",Aシート!AF15))+(IF(Aシート!R26="※","1","0")) エラーの原因を教えていただけると大変助かります。 なお(1)同士のIF関数の組み合わせは問題なく動作しました。 よろしくお願いします。

  • エクセルでIFとANDを使った関数について教えて下さい

    A B C D E F G 1 1 2 3 結果 2/3 2/4 2/5 2 2/3 2/4 2/5 合格 0 0 1 3 上記のような表を作成しようとしています。条件が、 D1が「合格」で、 C2の日付がE1(該当セル、E1なら2/3、F1なら2/4)と同じなら「1」、 違うなら「0」、 B2の日付がE1(該当セル、E1なら2/3、F1なら2/4)と同じで尚且つ、 C2が「空欄」なら「1」、違うなら「0」、 A2の日付がE1(該当セル、E1なら2/3、F1なら2/4)と同じで尚且つ、 C2が「空欄」で、B2が「空欄」なら「1」、違うなら「0」 を返しなさい。 という関数を作りたいのですが、上手くいきません。 IFとANDを使えばいいと思うのですが、どのように組み合わせれば 良いでしょうか。 真を返す、優先順位は、C2、B2、A2、のセルです。 C2に日付が入ってるときはB2とA2に日付が入っていても カウントされないように(偽が入るように)したいのです。 ちなみに、最初は、 =IF($D2="合格",IF($C2=E$1,1,IF($B2=E$1,1,IF($A2=E$1,1,0))),0) と、入れてましたが、これだと、C2に日付が入った時にC2だけカウント したいのに、B2もA2もカウントされてしまいます。 どうか、良きアドバイスをお願いします!!

  • 勤続年数の平均を出したい

    エクセル2000で社員名簿を作っています。 平均勤続年数を出したいのですが、=AVERAGE(勤続年数の入ったセル一覧)としても答えが出ず、#DIV/0!となります。 ちなみに勤続年数は   =DATEDIF(E4,$F$2,"Y")&"年"&DATEDIF(E4,$F$2,"YM")&"ヶ月"     ※F2セルに今日の日付、E列に入社年月日が入っています という関数で出しており、セルの書式は「標準」です。 平均年齢は同じ方法で出せるので、不思議です。。。 よろしくお願いします。

専門家に質問してみよう