この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ぷらら」についての質問です。
>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)<>"")),"",
の[真の場合]である""(空欄)が表示される様になっている訳です。
このQ&Aは役に立ちましたか?
この質問は投稿から一年以上経過しています。
解決しない場合、新しい質問の投稿をおすすめします。
まず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
ありがとうございました。早速実行しました、手打ちで入力したらうまくいかずエラー多発でしたがやっと入力が、ちゃんとできました。
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 白 主幹 愛 社長
私には改善方法がわかりません。どうか教えて下さい。
関連するQ&A
会員氏名の名前が変更できません
会員氏名の名前が変更できません。 AからBに変更したいのですが 名前の欄が灰色になっており 入力不可能です。 ※OKWAVEより補足:「ひかりTVのサービスや...
関数【VLOOKUP】で検査値の読み方が同じとき
A列 B列 C列 D列 1行シメイ 血液型 氏名(入力)結果表示 2行アイ B アイ B 3行アイ A アイ B 4行...
日々管理(多数作業者、多数項目を日々管理)
エクセル2010です。マクロはまったくダメです。 30人の作業者、8項目の作業工程を日々管理して月報集計する。 今、考えていることは、【A列】の【3行目】から列...
エクセルで一列全部空白であったら、その列を削除する
エクセルで資格取得の表を作成します。 資格の種類は、既定されています。下の例は5個の資格ですが、実際は、簿記にしても、商業簿記、工業簿記、●級と有り多数です。 ...
1セル内の複数キーワード集計
1つのセルに好きな季節を記入してあります 行に集計項目があります。A1:春 B1:夏 C1:秋 D1:冬 E列に好きな季節をカンマで区切って入れます。 E2:【...
ベストアンサーを選ぶと質問が締切られます。
なおベストアンサーを選びなおすことはできません。
お礼
2015/04/10 04:43
ありがとうございました。理由も判明しましたし、思い通りの結果表示になりました。これで報告書作成がスピーディにできます。私の【FALSE】の入力もれでした。=VLOOKUP(C2,$A$2:$B$7,2,FALSE)にしたら、【満足】した結果表示。アドバイス頂いた通りの関数式で【大満足】の結果表示になりました。関数式は奥が深くて難しいです、私もがんばりますのでまた不明点がありましたら、エクセル以外のことでも質問しますので、よろしくお願いします。