带有名称/值对的Excel下拉列表

jm6*_*666 27 excel

我有2个工作表的工作簿.

"Sheet2"有两列:

|    A    |      B        |
+---------+---------------+
|  code1  | description 1 |
|  code2  | Descr 2       |
Run Code Online (Sandbox Code Playgroud)

Sheet1有几列,其中一列(D列)是代码.在这一栏中,我需要一个"投递箱",什么

  • 将显示列Sheet2!B(描述),以及用户选择一个描述时
  • 将从codecol 进入:A.

without additional helper columnSheet1 可以做到吗?(Excel 2010)

所以,在html中需要一些简单易懂的东西:

<select>
  <option value="code1">Description 1</option>
  <option value="code2">Descr 2</option>
</select>
Run Code Online (Sandbox Code Playgroud)

当用户选择"Descr 2"时,表单获得"code2".

这个问题可能是重复的 - 但我不确定 - 如何: 如何在Excel中创建具有多个列的下拉列表,但唯一的答案是将其指向外部站点,其中解决方案是另一个问题.

添加了截图以获得更精确的说明: 在此输入图像描述

ele*_*lAJ 15

简单! 这是我们要得到的!

在此输入图像描述

仅限3个步骤:

  1. 定义要用作查找值的范围

  2. 创建下拉列表

  3. 粘贴一些代码


步骤1:Sheet2像这样设置并将命名范围定义为_descrLookup:

定义VLookup的命名范围

( Highlight -> Right-Click -> "Define Name..." )
Run Code Online (Sandbox Code Playgroud)

这是一个可选步骤,但它使步骤3的操作变得简单.



步骤2:Sheet1,使用数据验证创建下拉列表,并使用您想要在DROPDOWN中显示的值作为源.在这个例子中它是Sheet2 A2:A4(见上图):

将数据验证设置为工作表2中的源

( Data -> Data Validation )
Run Code Online (Sandbox Code Playgroud)



第3步:添加一些VBA代码Sheet1:

( Right-Click the tab Sheet1 -> View Code )
Run Code Online (Sandbox Code Playgroud)

将其粘贴到代码窗口中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
Run Code Online (Sandbox Code Playgroud)

  • 不好了!你有开发者标签吗?如果没有,您可以单击顶部的小齿轮图标,然后转到“功能区首选项”并在此处启用它。希望有帮助! (2认同)

Ric*_*ich 13

听起来像数据验证(允许列表)与VLOOKUP结合将做你想要的.

在表2上设置您的描述/代码列表.使其成为命名范围(有助于避免循环引用问题).

在工作表1的说明列中,使用数据验证来生成引用列表的描述列的下拉列表.在代码列中使用VLOOKUP函数,键入下拉列表值.

=IF(B4="", "", VLOOKUP(B4, FruitList, 2, FALSE))
Run Code Online (Sandbox Code Playgroud)

更新 -

我开始明白你的意思是"没有辅助专栏",但我不确定你能得到你想要的东西.Excel设计的一个事实:你看到的是你得到的,即单元格中显示的值是该单元格的有效值.您不能让单元格显示一个值,但"包含"另一个值.这样的事情在HTML中是"死的简单",但HTML控件不是为了与电子表格中的单元格相同的目的而构建的.它同时是两件事:一个值,以及该值的用户界面表示.电子表格单元格可以包含一种确定值的方法(下拉列表,公式等),但它达到的任何值都将是它显示的值.

Excel具有组合框之类的形式支持,但我相信该值仍然输出到另一个单元格.

通常的方法是使用数据验证来创建下拉列表,并使用VLOOKUP为代码创建单独的列.如果你真的不能有另一列来包含代码那么我不知道该告诉你什么.这取决于数据的消耗方式; 你想要打印输出,还是正在由另一个程序处理的工作表?

更新2

如果您真的不想使用单独的代码列,可以使用组合框技术,如下所述:

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

这会很复杂.您需要做的是(a)当用户选择D列中的一个单元格时,显示组合框,以及(b)动态调整框的显示项目.这将涉及VBA代码,我不是100%确定它是可能的.这当然不值得努力.