• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:説明付きのリスト入力)

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

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

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

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