我有2个工作表的工作簿。
“Sheet2”有两列:
| A | B |
+---------+---------------+
| code1 | description 1 |
| code2 | Descr 2 |
Sheet1有几列,其中一列(D列)是代码。在本专栏中,我需要一个“下拉框”,
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,其中解决方案是另一个问题。
添加了截图以获得更精确的解释:
答案 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)
简单! 这是我们要得到的!
仅限3个步骤:
定义用作查找值的范围
创建下拉列表
粘贴一些代码
<小时/> 第1步:设置此
Sheet2
并将命名范围定义为_descrLookup
:
( Highlight -> Right-Click -> "Define Name..." )
这是一个可选步骤,但它只是让步骤3更容易理解。
Sheet1
中,使用数据验证创建下拉列表,并使用您想要在DROPDOWN中显示的值作为来源。在此示例中,它是Sheet2 A2:A4
(参见上图):
( Data -> Data Validation )
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)