本文へ移動
サポートシェアリングソリューション
OKWAVE Plus

このQ&Aは役に立ちましたか?

ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセルで氏名,役職作成。氏名入力で役職表示)

エクセルで氏名役職作成方法

2023/10/12 13:31

このQ&Aのポイント
  • エクセルで氏名と役職を関連付ける方法について教えてください。
  • 任意なセルに氏名を入力すると、右隣りのセルに対応する役職を表示する方法を教えてください。
  • 関数式を使用して氏名と役職を関連付ける方法について教えてください。
※ 以下は、質問の原文です

エクセルで氏名,役職作成。氏名入力で役職表示

2015/04/08 23:34

エクセルで テーブル(A列(100人分氏名)B列(100人分役職))を作成。テーブル以外の任意なセルに氏名を入力すると右隣りのセルに役職表示したい。

【下の例はA列B列は100人分のデータです】
【F列に白を入力でG列に主幹と表示したいです】
【F列に氏名入力するのは、ランダム入力です

A列 B列      F列    G列
氏名 役職
愛  社長       白     主幹
恋  課長       愛     社長
山  部長
川  係長     F列に白と入力でG列に主幹と表示
谷  平社員    F列に愛と入力でG列に社長と表示
白  主幹

関数式での方法を
どうか教えて下さい



※OKWaveより補足:「ひかりTVのサービスやISPぷらら」についての質問です。

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

ベストアンサー
2015/04/10 02:18
回答No.3

>D列の社長表示セルに【=VLOOKUP(C2,$A$2:$B$7,2)】と関数入力

>1 氏名役職C列D列
>2 愛 社長 恋 主幹 恋 入力すると主幹になる
>3 恋 課長 白 主幹
>4 山 部長 山 部長
>5 川 係長 谷 平社員
>6 谷 平社員 恋 主幹  恋 入力すると主幹になる  
>7 白 主幹 愛 社長


 VLOOKUP関数内の列番号の後の所で指定すべき検索方法をFALSEとする事で、

=VLOOKUP(C2,$A$2:$B$7,2,FALSE)

の様にしておられなかった事が原因です。
 検索方法を省略するか、或いはTRUEにしていた場合、A列のデータを下から順番に調べて行った際に、C2に入力されている検索値以下の値が初めて現れた行の値が返されます。
 B列に「主幹」と入力されている行のA列の値は「白」となっていますが、「白」という字の文字コードは18290であり、「恋」という字の文字コードである20088よりも小さいな数であるため、「白」という文字は「恋」という文字よりも小さな値として扱われます。
 そして、A列に「白」と入力されている行よりも下には、「白」という文字列データよりも小さな値が入力されているセルが存在していないため、A列に「白」と入力されている7行目が、「A列のデータを下から順番に調べて行った際に、C2に入力されている『恋』という値以下の値が初めて現れた行」という事になりますので、7行目のB列の値である「主幹」が返された訳です。

 尚、

=VLOOKUP(C2,$A$2:$B$7,2,FALSE)

という具合に検索方法をFALSEとしておいた場合には、他の行の値がどんな順番に並んでいるかという事には関係なく、検索値と全く同じ値が入力されている行の値が返されます。
 但し、A列に検索値と全く同じ値が入力されているセルが存在しなかった場合には、エラーとなってしまいます。
 その様な事を防ぐためには、回答No.2において私か示した関数の様に、IF関数やISERROR関数等と組み合わせる事で、VLOOKUP関数の結果がエラーとなる場合には何も表示させない様にする必要があります。
 回答No.2において私か示した関数では、ISERROR関数の中にVLOOKUP関数を入れ子にした判定式を使う事で、VLOOKUP関数の結果がエラーとなる場合には、IF関数の処理結果が空欄となる様にしている訳です。
 又、ただ単にVLOOKUP関数だけを使った場合には、VLOOKUP関数によって検索して参照した際の参照先のセルが、もし空欄のセルであった場合に空欄は返されず、数値の0が返されてしまい、参照先とは異なる結果が表示されてしまいます。
 その様な事を防ぐために、回答No.2において私か示した関数では、ISERROR関数の中にVLOOKUP関数を入れ子にする際に、

ISERROR(1/(VLOOKUP(INDEX($F:$F,ROW()),$A:$B,2,FALSE)<>""))

の様にしています。
 例えばVLOOKUP関数の参照先が空欄であった場合には、

VLOOKUP(INDEX($F:$F,ROW()),$A:$B,2,FALSE)<>""

という判定式の結果はFALSEになりますが、このFALSEという値は、Excel内では数値の0として扱われますので、

1/(VLOOKUP(INDEX($F:$F,ROW()),$A:$B,2,FALSE)<>"")

という部分の結果は

1/(VLOOKUP(INDEX($F:$F,ROW()),$A:$B,2,FALSE)<>"")=1/FALSE=1/0

となり、1を0で割る事になりますのでエラーとなります。
 但しこの判定式はISERROR関数の中に存在しているため、ISERROR関数の判定結果はTRUEとなりますので、IF関数

IF(ISERROR(1/(VLOOKUP(INDEX($F:$F,ROW()),$A:$B,2,FALSE)<>"")),"",

の[真の場合]である""(空欄)が表示される様になっている訳です。

お礼

2015/04/10 04:43

ありがとうございました。理由も判明しましたし、思い通りの結果表示になりました。これで報告書作成がスピーディにできます。私の【FALSE】の入力もれでした。=VLOOKUP(C2,$A$2:$B$7,2,FALSE)にしたら、【満足】した結果表示。アドバイス頂いた通りの関数式で【大満足】の結果表示になりました。関数式は奥が深くて難しいです、私もがんばりますのでまた不明点がありましたら、エクセル以外のことでも質問しますので、よろしくお願いします。

質問者

このQ&Aは役に立ちましたか?

この質問は投稿から一年以上経過しています。
解決しない場合、新しい質問の投稿をおすすめします。

質問する

その他の回答 (3件中 1~3件目)

2015/04/08 23:55
回答No.2

 まずG列のセルに次の関数を入力して下さい。

=IF(INDEX($F:$F,ROW())="","",IF(ISERROR(1/(VLOOKUP(INDEX($F:$F,ROW()),$A:$B,2,FALSE)<>"")),"",VLOOKUP(INDEX($F:$F,ROW()),$A:$B,2,FALSE)))

 次に、そのセルをコピーして、G列のセルの中で役職を表示させなければならなくなる可能性のある全てのセル(表の中のG列のセル)に貼り付けて下さい。

 以上です。

お礼

2015/04/09 19:09

ありがとうございました。早速実行しました、手打ちで入力したらうまくいかずエラー多発でしたがやっと入力が、ちゃんとできました。

質問者
2015/04/08 23:37
回答No.1

vlookup関数ではダメなのですか??
参考
http://www.yoshikawa.co.jp/ybs/skilup/ybs0308.htm
http://allabout.co.jp/gm/gc/297725/

お礼

2015/04/09 03:18

【お礼する】早速実行しました。大変助かりました。
【お礼する】でまたアドバイスを頂くのは失礼でございますが
アドバイスをお願いします。
エクセルは2010です。

D列の社長表示セルに【=VLOOKUP(C2,$A$2:$B$7,2)】と関数入力
 セルD3で課長表示出ず。

1 氏名 役職 C列 D列
2 愛 社長 愛 社長
3 恋 課長 恋 主幹
4 山 部長 山 部長
5 川 係長 川 係長
6 谷 平社員 谷 平社員
7 白 主幹 白 主幹


1 氏名 役職 C列 D列
2 愛 社長 恋 主幹 恋 入力すると主幹になる
3 恋 課長 白 主幹
4 山 部長 山 部長
5 川 係長 谷 平社員
6 谷 平社員 恋 主幹  恋 入力すると主幹になる  
7 白 主幹 愛 社長

私には改善方法がわかりません。どうか教えて下さい。

質問者

お礼をおくりました

さらに、この回答をベストアンサーに選びますか?

ベストアンサーを選ぶと質問が締切られます。
なおベストアンサーを選びなおすことはできません。