• ベストアンサー

Excelの入力規則で2列表示したい

入力規則を使って、社員コードを入力する際に 10001 山田太郎 10002 鈴木花子 10003 佐藤大介 のように、ドロップダウンリストに「社員コード」「社員名」と2列表示させたいのです。 そして、例えば山田太郎を選択すると、セルには「10001」だけが入力されるようにしたいのですが・・・ (Accessのルックアップフィールドみたいな感じ) [入力規則]-[リスト]で、社員コード表を選択しても、単一の列または行でなければいけませんとエラーが出ます。 かといって[入力規則]-[リスト]で範囲指定をカンマ区切りで 10001 山田太郎,10002 鈴木花子,・・・と入力しても、エラーは出ませんがドロップダウンリストから選択したときに社員コード表と社員名が一緒にセルに入力されてしまいます。 なにか良い方法はありませんでしょうか? よろしくお願いいたします。

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

  • ベストアンサー
  • nihonjinn
  • ベストアンサー率39% (79/200)
回答No.4

番号と社員名の間にスペースが入っているなら メニューバーから「データ」→「区切り位置」で 1「カンマやタブなど---」にチェックを入れて「次へ」 2「区切り文字」で「スペース」にチェックを入れて「次へ」 3「完了」 で番号と社員名が違う列へ分けることが出来ます。 番号のデータがA2からA4、社員名がB2からB4にあるとし C1にリストを設定して番号を入れ、D1に社員名が反映するようにするときにはD1に =INDEX(A2:A4,MATCH(C1,B2:B4)) と入れてやるとうまくいくと思います。

opi777
質問者

お礼

ご回答ありがとうございます。 ちなみに、=INDEX(A2:B4,MATCH(C1,A2:A4),2)で良かったですよね?? 意図していたものとちょっと違うのですが、とても良いです。 (というかこの方がいいです) とても参考になりました。ありがとうございました^^

その他の回答 (6)

  • suzusan7
  • ベストアンサー率64% (22/34)
回答No.7

#5です。 説明にも簡単に書きましたが、 ドロップダウンリストではセル内改行は無効ですが、 選択後はセル内改行が有効となるという違いを利用しています。 しかし、セル内容は同じな訳です。 つまり、ドロップダウンリストのセルをキーにしても Vlookupは使用できるわけです。 文字での検索になるので、検索の型をfalseにしておけば、問題なしです。 社員コード、社員名もVlookupで引っ張ってくるなら、 例で示した構成を、B列に社員コード、C列に社員名、 A列に社員コードと社員名の合成を使用すればいいだけですよね。 どうしても社員コードをキーにしたいということであれば、 上記のようにして、Vlookupで社員コードだけを引っ張ってきて 以後はその社員コードをキーに使用するということで問題ないかと。 または、ドロップダウンリストがセルD1にあるとして =LOOKUP(10^17,LEFT(D1,ROW(A1:A20))*1) と入力して、Alt+Shift+Enterで確定(配列形式)とすれば、 ドロップダウンリストのセルから数字部分だけ、つまり社員コードを 抜き出すことができます。 (この式は社員コードが氏名より前にある場合です) 社員コードをキーにするということにこだわるのであれば、 上記のように、ドロップダウンリストから社員コードを引っ張ってくれば よろしいだけかと思いますが。 あと、訂正をひとつ。 セル内改行がドットで表示されると前回書きましたが、 Excel97ではそうでしたが、Excel2002ではドットで表示されませんでした。 このあたりはバージョンで異なるようです。

opi777
質問者

お礼

再度ご回答、ありがとうございます。 そうですね、VLOOKUP自体は社員コードと社員名でも検索してくれると思います。ただ今回社員コードのみをキーにしたいのは(またまた説明不足でしたが)、会社のホストコンピュータから出力されるEXCELの営業成績表を、VLOOKUPの検索範囲として参照したいから・・・などの理由からです。 いろいろなワザ(!)を駆使すればなんとかなる事なのかもしれませんが、あまりひねらずに出来る方法があるのでは?との思いから質問してみました。 この場を借りて、ご回答いただいた皆様にお礼申しあげます。 とても勉強になりました。ありがとうございました!

  • coco1
  • ベストアンサー率25% (323/1260)
回答No.6

#1です。一例を補足です。 B列に社員コードを入力する必要があるとしますと、A列に社員コード+氏名を入力する作業列を作成します。 ここではA列としましたが、実際には印刷や集計に影響のない、かつ、入力に便利な列を選択して下さい。 さらに、先に回答したようにAA列:社員コード+氏名、AB列:社員コード、AC列:氏名を用意したテーブルを別に用意して表引き用にします。 そうして、入力する際にはAA列をリストソースにしてA列に入力します。 この後、実際に社員コードが欲しいB列には、A列をキーにして、AA~AB列に対してvlookupを行えば、社員コードだけが取り出せますので、結果的には望む体裁になりませんか? もちろん、氏名が必要な場合はこの範囲をAC列にまで拡げればよいですし。

opi777
質問者

お礼

なるほど、よくわかりました。 この方法ですと、社員名+社員コードをドロップダウンから選択でき、さらに関数を組み合わせると、別セルに社員コードを表示できるということですね。 参考になりました。 再度ご回答、ありがとうございました。

  • suzusan7
  • ベストアンサー率64% (22/34)
回答No.5

こんばんわぁ。 行高さの設定等で使用できない場合もあるかもしれませんが、 次の方法ではいかがでしょうか? セルA1~A3に社員コードが、 セルB1~B3に社員名があるものとします。 セルC1に =A1&""&B1 と入力します。ただし、""の中はAlt+Enter(セル内改行)を入れてください。 Alt+Enterを押すと数式バーの表示も改行されますので、状況がわかるかと思います。 また、セル内改行の前後にスペースを入れておくと、後で見やすくなると思います。 これで確定をすると、セルC1には10001・山田太郎 という感じで社員コードと氏名の間にドットが入った表示になるかと思います。 (セルの設定をいじっていないことを想定してます) セルC1をセルC2~C3にコピーして下さい。 この表示がドロップダウンリストに表示されることになりますので 見栄えはセル内改行の前後にスペースを入れる等で適当に調整してください。 次にセルD1に入力規制を設定するものとします。 セルD1のセルの書式設定で 折り返して全体を表示するにチェックを入れ、 文字配置の縦位置を上詰めにします。 この状態でセルC1~C3を元の値としてリストの設定をします。 ドロップダウンリストにはセル内改行は適用されないので “10001・山田太郎”のようにセル内改行はドットで表示され 選択後はセル内改行が有効となり、折り返されてセルの下のほうに行くため 表示されなくなります。 (正確には表示範囲外に社員名はあることになります。) ドロップダウンリストではドットが表示されますが、 選択後は社員コードだけになるかと思います。 (見栄えだけですけど) 行の高さがちょっと高いようでしたら、Alt+Enterを2つ入れたりすると もう少し調整ができたりします。

opi777
質問者

お礼

ご回答ありがとうございます。 説明がまずかったかもしれません。 補足しますと、社員コードをキーにしてVLOOKUPで別表から社員の営業成績を引っ張ってくるつもりです。 その時、社員コードを手入力するのは手間なので、ドロップダウンリストから選択(入力規則で設定)したいのです。 ただ、ドロップダウンリストから選択するときに、社員コードだけ見ても誰のものかわからないので、一緒に社員名が表示されたら便利だな、でもドロップダウンリストから選択した後セルに入力されるのは社員コードだけにしないとVLOOKUPが使えないしな・・と思ったわけなのです。 でもそんな贅沢なこと無理ですよね・・

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

#2です。セルには「10001」「だけ」をと言うところを見落としました。済みません。別セルに=mid(g1,1,3)とか入れるやり方やVBAで Private Sub Worksheet_Change(ByVal Target As Range) If Target.Column = 7 Then 'G列の場合 ActiveCell = Mid(ActiveCell, 1, 3) '3桁の場合 End If End Sub でそれらしくはなりましたが、なぜか反応は鈍いし、このやり方はどうでしょう。 ActiveCell = の行は Target = Mid(Target, 1, 3)でも同じでした。 VBAでリストボックスをつかい、リストには多列表示して、1列目のみセルにセットなども、本の例題で見た気がしますが。

opi777
質問者

お礼

再びご回答ありがとうございます。 やはりVBAでやるしかなさそうですね・・ VBAは全く知識がないので、これから勉強してみようと思います。 imogasiさんはVBAやその他いろいろお詳しい方のようですね。 今後もお世話になるかもしれません(^^ゞ またよろしくお願いします。

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

E列、F列に 123 山田 124 小島 125 松屋 とある時 G1に関数式=E1&F1と入れて、式を複写します。 123山田 124小島 125松屋 となります。 =E1&" "&F1 も見やすいかも知れません。 データ-入力規則-リスト-(元の値)G1:G3 でどうですか。 E列の文字数が行で違う時は一定文字数を決めて (一定文字数)-(実際の文字数)文の空白桁を挟んで F列の先頭が揃うように出来るので、そうすると見やすいです。揃え方の実例は本日のNo.717182の私の回答 をご参考にしてください。

opi777
質問者

お礼

ご回答ありがとうございます。 お教えいただいた方法、早速試してみました^^ ですが、これでもやはり、ドロップダウンリストから選択したときに社員コードと社員名が一緒にセルに入力されてしまいます。 ドロップダウンリストから選択するときは「社員コード」+「社員名」 選択した後にセルに入力されるのは「社員コード」のみ このような事は不可能でしょうか? たびたび申し訳ありませんが、よろしくお願いいたします。

  • coco1
  • ベストアンサー率25% (323/1260)
回答No.1

別に列を用意して、作業用データとして |A------------|B-----|C 10001山田太郎 |10001 |山田太郎 10002鈴木花子 |10002 |鈴木花子 10003佐藤大介 |10003 |佐藤大介 といった感じのテーブルを作成し、A列をキーにしてB列を値表示、更にB列をキーにしてC列を表示 という具合にしてはどうでしょう?

opi777
質問者

お礼

ご回答ありがとうございます。 >A列をキーにしてB列を値表示、更にB列をキーにしてC列を表示 これは、入力規則に加え関数を使うということなのでしょうか?それとも他の方法で・・? お手数ですが、出来ればもう少し具体的にお教えいただけると嬉しいのですが。 お願いいたしますm(__)m

関連するQ&A

  • Excelの入力規則について

    Excelの入力規則について教えてください。 A1:A20に入力規則を設定します。 入力値の種類にリストを選び、元の位置で、北海道、青森、岩手、山形・・・と都道府県名を20件ほど入力し、設定が完了したとします。 A1セルでドロップダウンして、岩手を選び、次のA2のセルでドロップダウンした時、岩手をリストから消しておきたいのです。 つまり、リストから選んだものは、次のセルでドロップダウンした時、常に消えておくことができるように設定したいのですが、良い方法はありませんか?

  • EXCELのデータの入力規則について

    EXCELのデータの入力規則の設定で入力をドロップダウンリストから選択するようにしたのですが、ドロップダウンリストの文字が小さく、大きくしたいのですができません。アドバイス宜しくお願い致します。

  • EXCELの入力規則ユーザー設定

    EXCELの入力規則ユーザー設定で、特定のセルに 0、10、20、30、40、50だけの入力を許可したい。 ドロップダウンリストで選択する方法はわかっていますが、ユーザー設定でやる方法があれば教えてください。

  • エクセル 入力規則でドロップダウンリストが表示されない

    いつもお世話になります。 エクセル2000の入力規則のリストで、ドロップダウンリストを使って文字を入力したいのですが、ドロップダウンリスト"から選択する"にチェックを入れているのに、何故かドロップダウンのマークが 表示されません。

  • EXCELの入力規則に関して

    EXCEL 2003 で簡単な品物の管理表を作成しています。 例えば、品目としてパソコンがあり、品番としてAとBが有ったとします。 "パソコン"はセルにそのまま表示させ、品番は入力規則でAとBと書かれたセルを参照させ、ドロップダウンリストで選択するような作り方をしています。 このような場合での質問です。 1)入力規則で別シートのセルを参照先とすることはできますか。 2)参照先を作成せずに、ドロップダウンリストを作ることはできますか。(値一覧をセルやデータに内包するような感じです) 3)入力規則を複数のシートにコピーし、片方の値を変更した場合、別シートの同じ入力規則の値も連動して変更させることは出来ますか。 入力規則の機能では作りきれない部分も有るかとは思いますが、なにか良いアイデアがあればご提案いただくと有り難いです。

  • 一つの列に2つの入力規則を使いたい。

    B列にはプルダウンで選択するために入力規則で、リストで名前定義を使っているのですが、 また 「そのB列に隣接するA列のセルに何か入力されてないと、 B列に入力できない」 「=入力規則のユーザー設定、COUNTA(A1)=1」 とういう2つのことをしたいです。 でも、入力規則は1つしか出来ないですよね? こうゆう場合はどうすればいいのでしょうか? マクロでしょうか? よろしくお願い致します。

  • エクセルの入力規則

    エクセルで入力規則を使って行き先を入力しています。リスト項目は時々増える事があるので、事前に下の方に空きセルも少し範囲に設定していますが、これだと、ドロップダウンリストの下の方が表示されてしまします。これをリストの上のほうから表示出来るように設定出来ないものでしょうか。又、ドロップダウンリストの表示範囲(枠?)の長さを変更する事は出来るのでしょうか? エクセルは2003です。

  • Excel 入力規則 リスト 複数列表示

    こんにちは、 Sheet2にA列に製品IDと、B列に製品名があります。 A1 B1 001 製品1 002 製品2 003 製品3 ・・・ sheet1に注文表があり、 1)セルを選択すると「製品IDと、製品名」とが横に2列表示されるようなリスト一覧が出る。 2)リスト一覧から選択すると、そのセルに製品IDが入力される。 こんな風にするにはどうすればよいのでしょうか? 「データ」-「入力規則」では一列しか表示できませんでした。 何かお分かりの方がいましたら教えてください。よろしくお願いします。

  • エクセル2000の入力規則で困っています。

    エクセル2000のセルの入力規則で、条件の設定を 入力値の種類が「リスト」、 元の値が、カンマ区切りで  2,3,4,5  としております。 さらに、セルには書式設定で、表示形式が「ユーザー定義」で、0"年" にしてあります。 これで、セルを選択すると、ドロップダウンから 2~5 のいずれかしか選択できなくなり、セルには○年と正しく表示されますが、手入力で2~5の整数を入れようとすると「リストから選択してください」とはじかれてしまいます。 しかし、セルの表示形式が「ユーザー定義」でなければ、手入力でも2~5の整数値を問題なく入れることができます。 セルの書式は、あくまで見かけだけのことで、セルの中は同じ数値データのはずなのにどうしてこうなるのでしょうか? セルに○年を表示させながら、2~5の整数値の手入力を可能にする方法はないでしょうか?

  • エクセル:こんな「入力規則」によるエラーチェックは可能でしょうか?

    お世話になります。 【やりたいこと:同姓同名の方で時間がかぶるケースのエラーメッセージを出したい。】 下記のような、重複エラーチェックの方法について教えていただきたく、よろしくお願いいたします。 (やりたいことの質問例は表の下に記します) 「入力規則」でできますか? それともVBAでしょうか?幅広い方法でのご指導をいただければうれしいのですが、初心者わかりやすくご教授くださいますことをお願いいたします。   A       B      C 1 山田 太郎  10:00  11:00 2 川中 島子  11:30  12:30 3 山田 太郎  15:30  16:00 4 海川 花子  11:30  12:30 5 山田 太郎  10:30  11:00 【今回やりたいことの(例)】 上記の表で、B列、C列は時間で「B列からC列まで」という時間範囲を示します。 1行、2行、5行と山田太郎が入力されていますが、1行目と3行目は時間がかぶっていないのでOKです。しかし、1行と5行の山田太郎は時間がかぶっているためエラーメッセージを出したいのです。 【要約(再):同姓同名の方で時間がかぶるケースのエラーメッセージを出したい。】 質問がわかりにくかったならご指摘ください。 よろしくお願いいたします。

専門家に質問してみよう