29

2 つのワークシートを含むワークブックがあります。

"Sheet2" には 2 つの列があります。

|    A    |      B        |
+---------+---------------+
|  code1  | description 1 |
|  code2  | Descr 2       |

Sheet1 にはいくつかの列があり、そのうちの 1 つ (列 D) はcodeです。この列には「ドロップ ボックス」が必要です。

  • 列 Sheet2!B (説明) が表示され、ユーザーが 1 つの説明を選択すると
  • codecol:Aから入ります。

without additional helper columnSheet1で行うことは可能ですか? (エクセル2010)

したがって、html で非常にシンプルなものが必要です。

<select>
  <option value="code1">Description 1</option>
  <option value="code2">Descr 2</option>
</select>

ユーザーが「Descr 2」を選択すると、フォームは「code2」を取得します。

この質問はおそらく重複していますが、確信が持てません - How to create dropdown with multiple columns in Excelですが、それに対する唯一の答えは、解決策が別の問題の外部サイトにあることを示しています。

より正確な説明のためにスクリーンショットを追加しました: ここに画像の説明を入力

4

3 に答える 3

17

単純! これが私たちが得ようとしているものです!

ここに画像の説明を入力

3 ステップのみ:

  1. ルックアップ値として使用する範囲を定義します

  2. ドロップダウン リストを作成する

  3. いくつかのコードを貼り付けます


ステップ 1:このように設定し、名前付き範囲を次Sheet2のように定義します。_descrLookup

VLookup の名前付き範囲を定義する

( Highlight -> Right-Click -> "Define Name..." )

これはオプションの手順ですが、手順 3 を簡単に実行できるようにするだけです。



ステップ 2:で、データ検証Sheet1を使用してドロップダウンを作成し、ドロップダウンに表示する値をソースとして使用します。この例では(上の画像を参照):Sheet2 A2:A4

データ検証をシート 2 のソースに設定します

( Data -> Data Validation )



ステップ 3: VBA コードを に追加しますSheet1

( Right-Click the tab Sheet1 -> View Code )

これを のコード ウィンドウに貼り付けますSheet1

Private Sub Worksheet_Change(ByVal Target As Range)
    selectedVal = Target.Value

    If Target.Column = 4 Then
        selectedNum = Application.VLookup(selectedVal, Worksheets("Sheet2").Range("_descrLookup"), 2, False)

        If Not IsError(selectedNum) Then
            Target.Value = selectedNum
        End If

    End If
End Sub
于 2016-03-31T16:43:26.973 に答える
13

VLOOKUP と組み合わせたデータ検証 (許可リスト) は、あなたが望むことを行うようです。

シート 2 で、説明/コード リストを設定します。名前付き範囲にします (循環参照の問題を回避するのに役立ちます)。

シート 1 の説明列で、データ検証を使用して、リストの説明列を参照するドロップダウン リストを作成します。コード列では、VLOOKUP 関数を使用して、ドロップダウン リストの値をキーオフします。

=IF(B4="", "", VLOOKUP(B4, FruitList, 2, FALSE))

更新-

「ヘルパー列なし」の意味がわかり始めていますが、必要なものを正確に取得できるかどうかはわかりません。Excel 設計の事実: 表示される内容は取得される内容です。つまり、セルに表示される値は、そのセルの有効な値です。セルに 1 つの値を表示させることはできませんが、別の値を「含める」ことはできません。このようなことは、HTML では「非常に単純」ですが、HTML コントロールは、スプレッドシートのセルと同じ目的で作成されるわけではありません。それは同時に 2 つのことです: 値と、その値のユーザー インターフェイス表示です。スプレッドシートのセルには、値を決定する方法 (ドロップダウン リスト、数式など) を含めることができますが、到達した値が表示される値になります。

Excelにはコンボボックスなどのフォームサポートがありますが、値はまだ別のセルに出力されていると思います.

これに対する通常のアプローチは、データ検証を使用してドロップダウン リストを作成し、コードに VLOOKUP を使用して別の列を作成することです。コードを含めるための別の列を本当に持つことができない場合は、何を伝えればよいかわかりません。データの消費方法によって異なります。印刷しようとしていますか、それともシートが別のプログラムによって処理されていますか?

更新 2

別のコード列を使用したくない場合は、ここで部分的に説明されているように、コンボ ボックスの手法を使用できる場合があります。

http://www.contextures.com/xlDataVal10.html

それは複雑です。あなたがしなければならないことは、(a) ユーザーが列 D のセルの 1 つを選択したときに表示されるコンボ ボックスを取得し、(b) ボックスの表示項目を動的に調整することです。それには VBA コードが必要ですが、それが可能かどうかは 100% 確信が持てません。それは確かに努力する価値がないようです。

于 2012-06-06T15:36:48.463 に答える