29

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

“Sheet2”有两列:

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

Sheet1 有几列,其中之一(D 列)是code。在本专栏中,我需要一个“投递箱”,什么

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

可以without additional helper column在 Sheet1 中做吗?(Excel 2010)

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

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

当用户选择“Descr 2”时,表单会得到“code2”。

这个问题可能是重复的 - 但我不确定 - 如何在 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设计的一个事实:所见即所得,即单元格中显示的值是该单元格的有效值。您不能让单元格显示一个值但“包含”另一个值。这样的事情在 HTML 中“非常简单”,但 HTML 控件的构建目的与电子表格中的单元格不同。它同时是两件事:一个值,以及该值的用户界面呈现。电子表格单元格可以包含一种确定值的方法(下拉列表、公式等),但它达到的任何值都将是它显示的值。

Excel 支持组合框等表单,但我相信该值仍会输出到另一个单元格。

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

更新 2

如果您真的不想使用单独的代码列,则可以使用此处部分描述的组合框技术:

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

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

于 2012-06-06T15:36:48.463 回答
1

我能够使用以下步骤在 Mac OS X 的 Excel 2016 (15.33) 中打开开发人员选项卡:

  1. 在菜单中选择Excel->首选项
  2. 创作部分中,单击查看
  3. 在对话框底部,选中“开发人员”选项卡复选框

从 Excel 2016 (15.33) for Mac OS X 查看对话框

  1. 开发人员选项卡现在在 Excel 中可见

带有开发人员选项卡的 Excel 主屏幕

于 2017-04-14T21:47:03.263 回答