• ベストアンサー

エクセルでの三者選択??

会社で、職員の在職年数の表を作るのに、困っています。エクセル2000。 よろしくお願いします。 別のSeetに、個人ごとの在職年数、役職期間(期間は、昇任日などからDATEDIF を使い、出しています)どと入っています。 現役職が 係長で、なおかつ在職年数10年以上の者は『1』      課長で、なおかつ在職年数20年以上の者は『2』       部長で、なおかつ在職年数30年以上の者は『3』      主任以下については、『対象外』 という、条件を満たすものは、1~3の番号を振り分けないといけないという 表を作っています。 主任以下については、係長の昇任日が無い者が『対象外』と表示されるよう IF関数を使っています。 1~3を振り分けるのに、なにかいい関数はないでしょうか??? 説明不足とは思いますが、どうぞよろしくお願いします

  • myonn
  • お礼率34% (10/29)

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

  • ベストアンサー
  • sacoman
  • ベストアンサー率56% (33/58)
回答No.1

3択程度なら、IF関数をネスト(入れ子)しする程度で対応できますね。選択肢が多い場合は、ネスト階層の限界もありますから、条件マスタの表を作って、VLOOKUP関数などで、振り分けるようなことをするのがよいと思います。 今回のご質問の場合ですと、役職列と在職年数列の値を調べて、IF関数で分岐させる方法で以下のような感じでしょうか・・・。 =IF(AND(役職="係長",在職>=10),1IF(AND(役職="課長",在職>=20),2,IF(AND(役職="部長",在職>=30),3,"対象外")))

myonn
質問者

お礼

返事が遅くなり、申し訳ありません。。。。(*_ _)人 早速、試したところ、うまくいきました♪ 本当に有難うございました。

その他の回答 (3)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.4

IFのネストを使わない方法はないかと、色々考えましたが力及びませんでした。ここまでは出来るということでご参考まで。 テストデータA1:B7に 職位 年数 係長 7 係長 13 課長 26 課長 29 部長 30 部長 35 と入れる。 条件としてD1:F4に 職位 年数 コード 係長 >10 1 課長 >25 2 部長 >32 3 と入れる。 データ-フィルタ-フィルタオプションの設定 指定した範囲をON リスト範囲$A$1:$B$7 検索条件範囲$D$1:$E$4 抽出範囲$A$10:$B$16 OK 結果は 職位 年数 係長 13 課長 26 課長 29 部長 35 となる。 C11に演算式=VLOOKUP(A11,$D$2:$F$4,3,FALSE)を入れる。 C11をC14まで式を複写する。 結果は 職位 年数 コード 係長 13 1 課長 26 2 課長 29 2 部長 35 3 となります。元のA1:B7の対応行C2:C7にコードを戻せそうだが、取りあえずここまで。

myonn
質問者

お礼

こんばんわ。 返信が遅れてしまって、ごめんなさい。<(_ _)> いろんなやり方が、あるんですね。 やはり、エクセルは奥が深いです~。 本当に、有難うございました。

  • daiju3000
  • ベストアンサー率29% (21/72)
回答No.3

こんちしは。 A1~A10に役職 B1~B10に在職年数 があるとして、C1に =IF(AND(A1="係長",B1>=10),1,IF(AND(A1="課長",B1>=20),2,IF(AND(A1="部長",B1>=30),3,"対象外"))) と入力して、C10までコピーしてくださいな。

myonn
質問者

お礼

こんばんわ。 返信が遅れて、申し訳ないです…<(_ _)> この、関数の応用で、解決しました。 本当に、有難うございました。

  • Good-S15
  • ベストアンサー率33% (149/439)
回答No.2

こんにちは。 ヒントだけですが。。。 VLookup関数で30年以上のものかどうかをサーチし、 そうであれば、セル内が「部長」であるか・・・を IF文でネストすることで可能だと思います。 あるいは、VBAですから、プログラミングし、Case文を用いるのも一考でしょう。 ご参考下さい。

myonn
質問者

お礼

お礼が遅くなり、ごめんなさい。。。 VBAについては、これから勉強していこうと思っています。 その際は、また、よろしくお願いします。<m(__)m>

関連するQ&A

  • エクセルで複雑な退職金の計算をしたいのですが

    Excel2007で次の退職金の計算をしたいのですがご教授願います。 起算日 A1 退職日 A2 在職期間 =DATEDIF(A1,A2,"y")&"年"&DATEDIF(A1,A2,"ym")&"ヶ月"&DATEDIF(A1,A2,"md")&"日"       ←この計算式で○年○月○日を計算しました。 その後次の計算が必要になります。 (1)在職年数に端数がある時は月割りで計算し、1ヶ月未満の端数は1ヶ月に切り上げる。  端数日数を1ヶ月単位に切り上げ、○年○ヶ月を求めます。 (2)在職年月に基本給を掛けて、更に係数を掛けて退職金を求める。  (○年+○ヶ月/12)×基本給×係数 となります。 そこで(1)をトライしてみましたが、(2)の方法がわからないので、(1)の検証もできません。 (1)の計算は次のように求めてみました。  =DATEDIF(A1,A2,"y")&"年"&DATEDIF(A1,A2,"ym")+(DATEDIF(A1,A2,"md")>0)&"ヶ月" この計算では在職期間が○年11ヶ月○日となった場合、求めた在職年数は○年12ヶ月となってしまい、年に繰り上がりません。従って(2)の方法に影響が出そうですが、(2)の方法自体がわからないのでお手上げ状態です。 (1)と(2)、あるいは最初の方法からからでも構いませんので、ご教授を頂きたいと思います。

  • Excelで在職年月数が表示されるように設定したい

    Excelで質問です。 ある日付から年数と月数を出したいのですがうまくいきません。 例えば、セルA1に入社した日付(例えば2000年4月)があり、B1に○年○ヶ月(例えば7年1ヶ月)と在職年月数が表示されるように設定したいのですが、うまくいきません。 DATEDIF関数を使ったら年数は表示されても月数は出ません。 何か良い方法はあるのでしょうか?

  • Excelで入社・退社年月日を入力して、勤続年数表示したい

    Excelで入社年月日と退社年月日を入力すると、 勤続年数が表示できるようにしたいのですが、 方法が分かりません。 DateDifという関数があると過去の質問を検索してみたらでてきましたが、どのように使ったらよいのかが分かりません。 入社年月日⇒14年4月1日 退社年月日⇒16年4月20日 勤続年数⇒2年1ヶ月 という具合に、一ヶ月未満の日数がある場合は1ヶ月に繰上げて表示したいです。 そして、休業期間がある場合は同様に休業期間を表示して、勤続年数からマイナスして結果的に 勤続年数-休業期間=在職期間 と表示できるようにしたいです。 ご存知のかた教えてください!よろしくお願いいたします。

  • Excel 関数で年数(期間)計算したいのですが

    Excel 関数で次のような年数(期間)計算したいのですが、どのようにすればできますか? 教えてください。1900年以前の計算です。 たとえば、現在、2011年6月2日 と1868年11月4日は何年あるいは何日たっているか、という 問題です。 datedif関数でもうまくいきませんでしたが、そもそも関数でやることは無理なんでしょうか?

  • EXCEL DATEDIF関数について

    質問があります。 EXCELのDATEDIF関数で日付の期間内の年数、月数、日数、時間を2つのデーターから算出したいのですが、うまくできません。 そもそもDATEDIF関数では時間に対しては対応できないのでしょうか? また算出できる方法が有れば教えて頂けないでしょうか? データー基(例) A,14/04/30 00:01 B,14/05/02 05:03 宜しくお願い致します。

  • エクセルでの経過日数計算

    エクセルで経過日数計算に「DATEDIF」関数を使用しています。 「DATEDIF」関数では、経過の年数のみとか日数のみでの表示になりますが、 それを「○年○ケ月と○日」と計算させるにはどのようにすれば 良いのでしょうか?

  • 期間を求めるエクセル関数について

    期間を求めるエクセル関数について DATEDIF(B14,B16,"Y")&"年"&DATEDIF(B14,B16,"YM")&"ヶ月"という関数で求められる数値に+1にする関数があれば教えて下さい。 例えば、1983年4月~1985年6月の期間を上記の関数で求めると2年2ヶ月(26ヶ月)になるのですが、2年3ヶ月(27ヶ月)としたいのですがどうしたら良いでしょうか? 単純に考えて+1にすればいいので簡単なのかと思ったのですが、なかなか関数が作れませんでした。。。

  • エクセル 順番並べ替えについて

    今、エクセルで会社で使用するリストをつくっているのですが、本をみながら上から順に部署、その次に役職つぎに名前で並べ変えようとしたら、部長の次に主任が来きてしまいました。 (1)ツールの「オプション」→「ユーザー設定リスト」に「部長 次長 課長 係長 主任」と入力し追加。 (2)「並べ替え」を選択し、最優先に「部署名」2番目に「役職」。 (3)「役職」を選択しさっき設定リストに追加した 「部長 次長 課長 係長 主任」を選択し、OK。 ・・・・がしかし、変更された表には 部長→次長  →主任→係長の順番でならんでしましました。 明日中につくらなければいけないので、ぜひどうしたら順番通りにならぶのか教えてください!

  • エクセルで経過年数の平均

    エクセルで、DATEDIF(A1,B1,"Y")&"年"&DATEDIF(A1,B1,"YM")&"ヶ月"と関数を使い、経過年数&月数を「○年○ヶ月」と計算するデータを作りました。 さらに、計算された経過年数&月数の平均を求めたいのですが上手くいきません。 どうすればいいでしょうか?よろしくお願いします。

  • IF関数

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

専門家に質問してみよう