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

时间:2012-06-06 14:45:42

标签: excel

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

“Sheet2”有两列:

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

Sheet1有几列,其中一列(D列)是代码。在本专栏中,我需要一个“下拉框”,

  • 将显示列Sheet2!B(描述),以及当用户选择一个描述时
  • 将从col:A。
  • 输入code

可以在Sheet1中执行without additional helper column吗? (Excel 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,但唯一的答案是指向external site,其中解决方案是另一个问题。

添加了截图以获得更精确的解释: enter image description here

3 个答案:

答案 0 :(得分:12)

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

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

在工作表1的说明列中,使用数据验证制作引用列表说明列的下拉列表。在代码列中使用VLOOKUP函数,键入下拉列表值。

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

已更新 -

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

Excel对组合框之类的内容提供表单支持,但我相信该值仍会输出到另一个单元格。

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

更新2

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

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

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

答案 1 :(得分:12)

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

enter image description here

仅限3个步骤:

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

  2. 创建下拉列表

  3. 粘贴一些代码

  4. <小时/> 第1步:设置此Sheet2并将命名范围定义为_descrLookup

    define a named range for the VLookup

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

    这是一个可选步骤,但它只是让步骤3更容易理解。


    <小时/> 第2步:Sheet1中,使用数据验证创建下拉列表,并使用您想要在DROPDOWN中显示的值作为来源。在此示例中,它是Sheet2 A2:A4(参见上图):

    Set data validation to the source from Sheet 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
    

答案 2 :(得分:1)

我可以使用以下步骤在Mac OS X的Excel 2016(15.33)中启用“开发人员”选项卡:

  1. 在菜单中选择 Excel-&gt;偏好设置
  2. 创作部分中,点击查看
  3. 在对话框底部,选中开发人员标签复选框
  4. View dialog from Excel 2016 (15.33) for Mac OS X

    1. “开发人员”标签现在在Excel中可见
    2. Excel main screen with Developer tab