如何创建一个将索引值存储在隐藏字段中的下拉列表?

时间:2018-10-23 13:13:11

标签: excel

我有一个Excel电子表格,其中在工作表1上部门编号用数字表示,在工作表2上有这些编号的列表,旁边是部门名称。

如果可能的话,我希望获得帮助和建议,因为我希望允许用户从下拉列表中选择部门名称,并用部门号填充隐藏字段。

例如,在工作表3中,部门ID存储在该页面的C列中:

第1张

enter image description here

第2页

enter image description here

第3页

enter image description here

3 个答案:

答案 0 :(得分:9)

这可能是一种方法。

如果我对您的理解正确,那么用户将在工作表3的下拉列表中选择部门名称,然后将显示与该部门名称关联的索引号。用户将不受限于相邻列中的名称(andy,bob)...

结果将是(请注意,这是一个Excel Table!)

enter image description here

我们有3张纸:

enter image description here

选择数据区域,然后单击“格式化为表格”,选择选项“我的数据有标题”。对所有3张纸都这样做。

enter image description here

为表格命名:“设计”->“表格名称”。我将在“ Sheet1”中使用“ Table1”,在“ Sheet2”中使用“ Table2”等。当您链接并引用公式时,它将使工作变得更轻松。请注意,对于“ Sheet3”,我还添加了一个虚拟列C。将其命名为“索引号”。

enter image description here

转到“ Sheet2”,然后选择要用作下拉列表的范围(在我的情况下,我选择“部门名称”并选择“ B2:B8”。单击“公式”->“名称管理器” “->“新...”

enter image description here

将弹出此窗口。将其命名为简单名称(我将其命名为:“ Department_Names”),并检查“ Refers to:”是否采用此格式=TableX[Column Name]”。在我们的情况下,=Table2[Department]。注意,名称管理器不使用“ B2:B8”,而是引用表列区域。 最后一步非常重要!

enter image description here

转到Sheet3。单击要在其中应用下拉列表的单元格(在示例中,我使用B2)。点击“数据”->“数据验证”。

enter image description here

数据验证窗口现在将弹出。转到“列表”,然后在“源:”字段中,将您的命名范围写为=Department_Names(我将其命名为“ Department_Names”)。下拉列表将使用“ Department_Names”应用范围内的值。在我们的示例中,它将为“ Sheet2”中的所有部门名称创建一个下拉列表,范围为B2:B8

enter image description here

转到“ Sheet3”,然后在单元格C2中输入以下公式,如图所示。

注意,我使用“ ; ”作为分隔符(欧洲版本的Excel,美国用户可能会使用“ , ” )。

=IF([@Department]="","",IFERROR(INDEX(Table2[ID],MATCH([@Department],Table2[Department],0)),))

第一部分创建我们的索引号:

...IFERROR(INDEX(Table2[ID],MATCH([@Department],Table2[Department],0)),)
  • 从“表2”的列ID中返回索引号。 INDEX(Table2[ID]
  • MATCH公式中的
  • 查找值来自部门“ Table3” (下拉列表)
  • 查找值将在“表2”的“部门”列中显示。

在“表3”的“部门”列中未选择任何内容时,将创建0(将参见下图)

=IF([@Department]="","", ...formula...)

enter image description here

不包含=IF([@Department]="","", ...formula...)

的公式

enter image description here

如果您不想隐藏“索引号”列,则可以在“表3”中隐藏它。 右键单击“列C”标题,然后选择“隐藏”。

enter image description here

仅用于演示目的。我创建一个虚拟列“仅用于显示隐藏的列值”。因此,当用户选择部门名称时,它将更改与该部门关联的索引号。

enter image description here

那为什么要使用表和命名范围呢?

假设您需要添加一个新部门。我们在“表2”中添加部门,并为其指定ID:7和部门名称:Department H

enter image description here

“ Sheet3”中发生的事情是,下拉列表将自动捕获新行。名为“ Department_Names”的范围将调整为表格行,因为它链接到“ Table2[Department]”。如果减少Table2的行,也是如此。 Source

我还没有测试过,but I'm quite sure that you can link a table to an external source。因此,当您将数据导入表时(假设标题是静态的),该表将使用Excel中的“全部刷新”按钮进行更新。探索和深入研究的东西:)

enter image description here

答案 1 :(得分:4)

可以通过INDEX/MATCH完成。

例如:

Sheet1包含您的查找表。
为简单起见,Sheet1的数字 1-6-A1:A6范围内,而 A-F 的数字在B1:B6范围内。
1-6-是主键, A-F 是描述。

Sheet2在A列中有 Data Validation :允许使用=Sheet1!$B$1:$B$6作为 Source List 。这将为您提供A列中的下拉列表。
在隐藏的B列中,您有公式=IFERROR(INDEX(Sheet1!$A:$A,MATCH($A2,Sheet1!$B:$B,0)),"")

MATCH公式将返回描述出现在Sheet1中的行号。
INDEX公式将返回对同一行A列中单元格的引用-提供主键值。
如果未找到匹配项,则返回#N/A语句处理的IFERROR

答案 2 :(得分:4)

如果您的部门少于32个,此方法将起作用。

在UTF中,隐藏了代码128至160中的8个字符(还有许多其他字符)。您可以将这些字符用作ID密钥,只需将它们与部门名称连接起来即可。

这是excel的屏幕截图

第3列是Unicode字符,第4列是该字符与部门名称的串联,最后一列是从新部门名称中提取的ID。

enter image description here

这些是公式

enter image description here

最后,如果您的部门超过32个,但您必须找到另一个不可打印字符的插槽,它也可以工作

您必须使用新的部门名称作为数据验证下拉列表,其中需要输入部门,并且可以从输入的部门中提取ID