• ベストアンサー

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

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

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

  • ベストアンサー
  • 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/17069)
回答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