エクセル2007でリスト入力を補完する方法

このQ&Aのポイント
  • エクセル2007を使用している場合、リスト入力を補完するためにはVLOOKUP関数を使用することができます。
  • 具体的には、リスト入力される内容(色)を選択し、その右の列にVLOOKUP関数を使用してコードを自動入力することができます。
  • これにより、コード表を見ながらコードを入力する手間を省くことができ、入力が簡単になります。
回答を見る
  • ベストアンサー

説明付きのリスト入力

エクセル2007を使用しています。 入力規則で「リスト」を利用し、コードを入力しますが、そのコードの内容を表示させながら入力することはできないでしょうか? 例えば次のコードがあるとします。( )はそのコードの内容です。ちなみに、その( )内の内容は、リスト入力するすぐ右の列に入力しようと思います。今は、VLOOKUP関数でその内容についてはリストから選択入力したコードを参照して自動入力させようと思っています。 コード (内容) 10 (赤) 20 (青) 30 (黄) 40 (緑) 50 (白) A列2行目【A2】にコードを入力するとして、緑に対応するコードである40を入力しなければならないとします。 ところが、コードが数多く、まだ覚え切れていない場合、コード表を見ながら入力しなければなりません。 そのようなとき、リストの選択画面に入力対象であるコードとその説明が出れば入力が楽なのです。 こんなことってできるでしょうか? ちなみに、今はリストで内容(色)を選択入力し、その右の列にVLOOKUP関数でコードを自動入力する表を作りましたので、内容的にはOKな表を作りましたが、見栄え的にもう少しなのです。 よろしくお願いします。

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

  • ベストアンサー
  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.4

>入力規則で「リスト」を利用し、コードを入力しますが、そのコードの内容を表示 >させながら入力することはできないでしょうか?  ⇒この通り実現する方法はマクロ(VBA)組み込みでしょうか。   例えば、イベントプロシージャのセル更新を契機に起動するような仕組みで、   仮にリストが「10 赤,20 青~」ならばA2にコード、B2に内容というように   分割表示するようなイメージですがVBA学習が必須になります。   一案ですが、コメント表示と併用しては駄目でしょうか。   リスト選択するタイミングでは表示できませんが、対象セルを選択時点では   コメント表示で一覧を表示できます。   

pocorino
質問者

お礼

ありがとうございます そうですよね。 コメント表示は、個人的に見づらいと思って敬遠していたのですが、頂いたアイデアで、『入力規則』の表示機能を使う事を思いつきました これを組み合わせれば、思っていた事ができました ありがとうございました。

その他の回答 (4)

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.5

こんばんは! お役に立つかどうか判りませんが・・・ VBAでの一つの案です。 Sheet1のA列すべてが対応するようにしてみました。 ↓の画像でSheet2に表を作成しておき、名前定義しておきます。 Sheet2のA1~A6セルを範囲指定 → 名前ボックスに、仮に「リスト」と入力。 これでSheet2のA1~A6セルが「リスト」と名前定義されました。 (A1セルには敢えて空白にしています) Sheet1のA列を範囲指定 → データ → 入力規則 → リスト → 元の値の欄に =リスト としてOK 画面左下のSheet1のSheet見出し上で右クリック → コードの表示 → VBE画面が出ますので ↓のコードをコピー&ペーストしてA列のリスト表示内から選んでみてください。 Private Sub Worksheet_Change(ByVal Target As Range) 'この行から If Intersect(Target, Columns(1)) Is Nothing Then Exit Sub On Error Resume Next Target = Left(Target, WorksheetFunction.Find("(", Target) - 1) End Sub 'この行まで ※ コード内の括弧「( 」は半角・全角の違いによって全く反応しなくなりますので、 Sheet2の表内の括弧と同じ括弧にしてください。 以上、参考になれば良いのですが・・・m(_ _)m

pocorino
質問者

お礼

ありがとうございます とても勉強になりました

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

VBA,やVBでコンボボックスがあり、複数列表示が出来て、そのうちセルにセットする列(採用する列)を(あらかじめ一律に)決められる仕組みがあります。こういうようなのを使わないと質問のようなことは出来ないでしょう。 質問で言っているVLOOKUP関数で内容(漢字などによる説明)を別列に出して、入力した一瞬後に確認するは出来るがそれが限界でしょう。 コンボの1つのアイテムにマウスを持っていった段階で、ツールチップのような表示を出すのも、プログラムの専門家なら可能でしょうが、VBA程度にはそれは無いと思う。 質問者はVBAのことも判らないのではないかと思うので、当面無理です。 それより同一シートの別セル範囲に対応表を作っておいてそれをクリックすると、そのクリックのとなりのセルに入った色コードをアクチブセルにセットするなんてのはVBAで出来るが。 質問で言う色コード数はいくらぐらいあるのか。約20を超えるとスクロールなどの問題もあって使い難いはず。 >見栄え的にもう少しなのです 初心者は、内容以外の見栄えなど拘るのはおかしい。そもそもエクセルでやろうとするのも、たまたま自分がエクセルで出来ると思いこんでいるのだろうが、エクセルでやるのが最適ではない場合が多い。エクセルでやる以上はそこそこで我慢すること。VBA以上を勉強してからの話。

pocorino
質問者

お礼

ありがとうございます imogasiさんの回答は数年前から拝見していますが、専門的な知識の深さに敬服しています とても勉強になりました

  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.2

 ANo.1です。 >ちなみに、今はリストで内容(色)を選択入力し、その右の列にVLOOKUP関数でコードを自動入力する表を作りましたので、内容的にはOKな表を作りましたが、見栄え的にもう少しなのです。  それでしたら、色を入力する列を非表示にされては如何でしょうか?  その設定方法は以下の通りです。 色を入力する列の上にある、列番号が表示されているマスにカーソルを合わせて、マウスを右クリック   ↓ 現れた選択肢の中にある[非表示]をクリック  これで、その列の列幅が0になり、その列(添付画像ではB列)は表示されなくなります。  因みに、元に戻す際には、次の様に操作して下さい。 非表示にした列の左右の列をまとめて含む列範囲(添付画像ではA列~C列)を選択   ↓ 選択した列範囲の上にある、列番号が表示されているマスにカーソルを合わせて、マウスを右クリック   ↓ 現れた選択肢の中にある[再表示]をクリック

pocorino
質問者

お礼

再度の回答ありがとうございました とても勉強になりました

  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.1

 御求めの方法とは異なりますが、元のリストに色を入力すると、関数で別シートにコードが自動表示される様にしておき、その自動表示された内容を、最後に元のリストに値のみ貼り付けるという方法では駄目でしょうか?  今仮に、元のリストのコードの入力欄がSheet1のB列であり、VLOOKUP関数でコードを自動入力するための表がSheet1のG3~H7の範囲に存在するものとします。  まず、適当な使用していないシートの適当な列(ここでは仮にSheet2のA列とします)の1行目のセルに、次の数式を入力して下さい。 =IF(COUNTIF(Sheet1!$G$3:$G$7,"="&INDEX(Sheet1!$B:$B,ROW())),VLOOKUP(INDEX(Sheet1!$B:$B,ROW()),Sheet1!$G$3:$H$7,2,FALSE),IF(INDEX(Sheet1!$B:$B,ROW())="","",INDEX(Sheet1!$B:$B,ROW())))  次に、Sheet2のA1セルをコピーして、Sheet2のA2以下に貼り付けて下さい。  これで準備は完了で、後は元のリストのコード欄に、色か或いはコードを入力して行き、入力し終えた段階で、Sheet2のA列全体をコピーしてから、Excelの「形式を選択して貼付け」機能を使用して、Sheet1のB列に値のみを貼り付ければ良いと思います。

pocorino
質問者

お礼

複雑な関数をありがとうございました 勉強になりました

関連するQ&A

  • エクセルで入力したら、、、

    下記の表があります。 A3に、2と入力したら、、、 (A列には123・・と入力していく) (B列C列D列はリストで登録してあるので、選択するのみ) E列は、A3に2と入力したら、E3にE2がそのまま反映し、F3には”-い”となり、振分1・振分2・振分3には、それぞれG2、H2、I2がはいるようにしたいです。F列には、A列に2345・・と入力したらF列は、いうえおかき・・と進んでいく感じです。 説明が上手く出来ずすみません。 SUMIFS関数は使用できません。 VLOOKUP関数でやるしかないですか?

  • エクセルで2段階でリストからの選択入力したい

    エクセル2013で添付のようにSheet1のB列に顧客名、D列からR列まで行方向にその顧客の製品名が入力された表(顧客リスト)から、Sheet2の入力表のE列でリストから社名を選択したら、その社名に対応する製品名をF列でリストから選択入力できるようにしたいのです。 最初はINDEX関数とMACH関数の組み合わせで何とかと思ったのですが、名前の定義を使えば社名を選択したら直接製品名が選択できるように出来ると思ったのですが顧客が増えてきたら、不要の顧客名を削除したり、上書きしたらリストが崩れることに気づきました。 (顧客リストは毎月入力時に上書きしないとリストが長くなる一方で、リストから選択するより直接入力する方が簡単になってしまいます) 上記の問題を解消して、顧客リストを上書き、削除しても正しく選択できるようにならないでしょうか? 最初の思惑と違ってずいぶんハードルの高い内容になってしまい、回答いただいても当方に使えるかどうかも自信がなくなっていますがよろしくお願いします。

  • エクセルでの入力

    言葉が分からず、なんて質問していいのか分かりませんでした。。。 表での入力なのですが、Aの列にリストから入力してBの列にリストから選択したそれぞれの値を自動で入力されるようにしたいです。 例えば、商品だとしてAのリストから商品を選びBには値段が自動で入力されるというふうにしたいのです。 どういった式を入力すればいいのですか?? よろしくお願いいたします。

  • エクセルでの計算式について

    まず、(1)のシートには支店コード・店コード・店名…等の一覧リスト があります。 (2)のシートにおいて、支店毎に表を作成し、B列に店コードを入力する と自動的にC列に店名がD列に実績がというようにしたいのですが、 どのようにすれば宜しいでしょうか。 私の考えだと まず、(2)のシートでA支店コードを入力すると(1)のシートでA支店の範囲を 選択、店コードを入力するとVLOOKUP関数 【VLOOKUP(B8,データ!$D$2:$W$3433,2,1)】で必要項目抽出。 っといった形が出来れば良いのかな…と思いながらわからないのです。 ※同じ店コードがいくつもあるので、先に支店毎に選択しなくてはならず。 (フィルタは使用しません。) 自分で考えた結果はこんな感じでしたが、良い案をご存知の方教えて 頂けないでしょうか。 よろしくお願い致します。

  • 「入力規則」のリストとVLOOKUP関数機能をあわせたような設定

    いろいろ調べてみたのですが、分からなくて。 Excelで下記のような設定が可能かどうか教えて下さい。 ------------------------------------------------------- (Sheet1)   A   B 1 赤系 2 青系 3 黄系 A列は「入力規則」のリストを用いて、"赤系","青系","黄系"のいずれかを選択できる設定になっている。 A1のように"赤系"を選択した場合、B1にはそれに応じた別のリスト("チューリップ","ガーベラ","コスモス")を表示させる。 しかし、A2のように"青系"を選択したらB2には"バラ"を、A3のように"黄系"を選択したらB3には"ヒマワリ"を直接表示させる。 ------------------------------------------------------- 以上のような内容のものです。 (Sheet2)で、以下のように入力して入力規則のリスト用に名前をつけ、"青系"と入力したら"バラ"という項目のみをリスト表示させるようにするっていう手もありますが、、 (Sheet2)   A        B     C 1 赤系      青系   黄系 2 チューリップ  バラ   ヒマワリ 3 ガーベラ 4 コスモス そうすると、わざわざリストをドロップダウンさせたり何かしらアクションを起こさないといけないですよね。。 そういった手間もなく、"青系"もしくは"黄系"を選択した場合には"バラ"や"ヒマワリ"が表示されるようにしたいんです。 ここで"赤系"がなければVLOOKUP関数で対応できるのですが…。 このような、入力規則とVLOOKUP関数をミックスしたような設定はできるのでしょうか? できればVBAを用いず、関数で対応したいと思っています。 詳しい方、ご教示願いますM(_ _)M

  • 【エクセル】リスト作成について

    現在、エクセルにてリストを作成しております。 お力をお借り出来ると幸甚です。 簡単に記載いたします。 【シート内容】 A列に他シートにて都道府県のリストを作成し、そこを見て、リストから都道府県名を選択するようにしております。 B列には例として、特定の数字データを入力します。(手入力) A列      B列 (表1) 東京      10 千葉      20 神奈川     30 東京      40 埼玉      50 東京      60 千葉      70 --------------------------- この下に、上記表の取りまとめの情報を載せたいと考えております。 例として、(列はどこでも構いません) (表2) A列      B列 東京      110 千葉      90 神奈川     30 埼玉      50 【お力をお借りしたい部分】 (表2)に取りまとめの情報を作成する際の方法です。 (表1)のA列に、リストから選択された各都道府県名は、特定ではなく、変わります。 その為、(表2)のA列に各都道府県名を固定で記載し、B列にsumif関数等が使えないと考えております。 ・(表2)A列に(表1)A列に表示されている一覧から、重複なく、もれなく一覧を表示させる方法はありますでしょうか?(出来ればピボットテーブル等を使用せずに関数で出来たら助かります。)

  • EXCEL:入力規則の「リスト」は別シートを参照できない

    表の中の項目をVLOOKUP関数を使って入力したいのですが、 検索値(文字列)の入力者が多数いるので 「入力規則」の「リスト」を使って入力するようにしました。 VLOOKUP関数は別シートの範囲も指定出来ますが リストは同じシート内に元の値を設定しなければならないので、 同じようなシートが多数ある場合、全てのシートに同じデータ(元の値)を入力しなければならず大変です。 何か良い方法はないでしょうか。 上司はマクロを使ったら?と言いますが どんなマクロを使ったら出来そうなのか見当が付きません。 どなたかアドバイスよろしくお願い致します。

  • エクセルの入力規則のリストについて

    エクセル2013での入力規則のリストを使った方法について質問です。 例として、 A2には、「部署名」という名前のリストを作成。 A3には、INDIRECT関数を使って、A2で選択したものに応じてリストを切り替えるように。 A4に、VLOOKUP関数を使って、A3で選択したものから、他のデータを参照して売り上げを表示するようにするとします。 機能としてはうまくはたらいているのですが、A2で選択したリストに応じて即座にA3のセルが更新されないのが気になっています。 たとえば A2で営業、A3で田中、とリストで選択した後、A2で総務を選択しても、A3のセルには田中、と表示されたままになってしまいます(リストの▽を押せばリストは正しく選択できます。) できれば、A2で違う部署を選択したら、A3のセルに表示されていた名前は消える、または新しいリストで上書きされるような仕様にしたいと思っています。 また、マクロ、VBAは使用したことがないため、可能な限り使わない方向でお願いします。 文章のみで、拙い説明ですが、ご助言お願いいたします。

  • エクセルの絞込みによるリスト入力

    エクセルについて教えてください。 (1) A列を入力規制で『部』というリスト1からの入力になっています。 リスト1内には『1部、2部、3部』と入っているとします。 例えばA列に『1部』という名前をリストから選び、TabにてB列に移動した時 A列が『1部』であったならリスト2を表示、 A列が『2部』であったならリスト3を表示するという方法は可能でしょうか? リスト2には企画1課、企画2課・・ リスト3には営業1課、営業2課・・と入っているとします。 さらに、B列が『企画1課』と表示され C列にTab移動した時C列には人名リストから表示される、 といった絞込みのリスト入力をしたいと考えております。 (2) さらに、今回のようにA,B,C列をリスト内からの入力にしているのですが A列にリストから入力し、B列にTab移動した時に自動でリストが表示する方法は 可能でしょうか? 初心者であるためVBAは使用したことが無いので関数レベルで可能であれば 助かります。 よろしくお願いいたします。

  • エクセルでコンボのリスト範囲をしぼりたい

    エクセル2003の環境です。 入力用の表で所属入力欄と社員名入力欄があり、手入力の手間を軽減したいのがやりたい事です。 入力用の表の所属入力欄は、所属の一覧を『データの入力規則』でリストをコンボに設定しておく事で、一覧から選択するだけで入力する事ができますが、次の社員名を入力する所で先に選択した所属に属する社員のみのリストが表示されるようにする事が出来ません。(社員数が多いので全部をコンボリストにする事は実際的ではありません) A列に所属名、B列に社員名が入力されたリストがあり、 まず所属を選択したら、Vlookupを使って所属名と合致するものを検索するという手段を使ってみましたが、同一所属の社員が複数いるので一番最終の値を自動的に取ってくるようです。この最終値ではなく何行目のデータを取ってくるかを指定できる方法があれば何とかできそうなのですが、Hlookupだと取得するのが所属の方を持って来てしまうので上手く行きません。 尚、イメージとしては、オートフィルタで所属を絞ったらその所属の社員名が表示されるといった感じで出来ればと思っています。 どんな関数を使えばよいのか?又は関数以外の方法があるのか?ご存知の方がいらっしゃれば教えて下さい。よろしくお願いします。

専門家に質問してみよう