在 Excel 中的单个单元格中创建从属下拉列表

在 Excel 中的单个单元格中创建从属下拉列表

我正在尝试为高中创建一个依赖下拉列表。用户将选择单元格 A1,单击走廊 3(例如),然后用户将再次单击单元格 A1,然后选择房间号 325(例如)。最终结果应该是单元格 A1 显示 325。我可以创建第一个下拉列表,但第二部分是我遇到很大麻烦的地方。我使用的是 Excel 2010。任何帮助都将不胜感激。谢谢

答案1

我怀疑是否可以在同一个单元格中执行此操作(第一个项目在 A1 中,第二个项目在同一个单元格中)。我自己也遇到过类似的问题,是我用来解决这个问题的方法。现在我有几个相互依赖的下拉菜单,在我的一些同事用来“填写表格”的 Excel 工作簿的第一张表中:)这里也是解决此问题的好例子。

示例表可能是您需要的

A           B
HALLWAY     ROOM
Hallway 3   353
Hallway 3   325
Hallway 1   157
Hallway 1   124
Hallway 2   234
Hallway 2   265

创建两个下拉列表。

第一个下拉列表包含来自 A 列的唯一不同值。第二个下拉列表包含来自 B 列的唯一不同值,基于在第一个下拉列表中选择的值。

在公式 > 名称管理器 > 新建 > 命名hallway> 输入=OFFSET(Sheet1!$A$2,0,0,COUNTA(Sheet1!$A$2:$A$1000))“引用:”字段 > 关闭上创建动态命名范围

从 A 列创建一个唯一的不同列表。选择 Sheet2 > 选择 A2 > 键入"=INDEX(hallway,MATCH(0,COUNTIF($A$1:A1,hallway),0))"+ CTRL + SHIFT + ENTER > 复制单元格 A2 并将其粘贴到所需的位置。

创建动态命名范围以获取公式 > 名称管理器 > 新建 > 命名uniqhall> 放入=OFFSET(Sheet2!$A$2, 0, 0, COUNT(IF(Sheet2!$A$2:$A$1000="", "", 1)), 1)“引用:”字段 > 关闭中的唯一不同列表

创建下拉列表 > 选择 Sheet1 > 选择单元格 D2 > 单击数据 > 数据验证按钮 > 数据验证 > 允许:列表 > 来源:=uniqhall> 确定

仅基于第一个下拉列表中选定的一个单元格值的二级唯一列表。

在公式 > 名称管理器 > 新建 > 命名room> 输入=OFFSET(Sheet1!$B$2,0,0,COUNTA(Sheet1!$B$2:$B$1000))“引用:”字段 > 关闭上创建动态命名范围

从 B 列创建一个唯一的不同列表。选择 Sheet2 > 选择 B2 > 键入 "=INDEX(room, MATCH(0, COUNTIF($B$1:B1, room)+(order<>Sheet1!$D$2), 0))"+ CTRL + SHIFT + ENTER > 复制单元格 B2 并将其粘贴到所需的位置。

创建动态命名范围以获取公式 > 名称管理器 > 新建 > 命名uniqroom> 放入=OFFSET(Sheet2!$B$2, 0, 0, COUNT(IF(Sheet2!$B$2:$B$1000="", "", 1)), 1)“引用:”字段 > 关闭中的唯一不同列表

创建下拉列表 > 选择 Sheet1 > 选择单元格 D5 > 数据时钟 > 数据验证按钮 > 数据验证 > 允许:列表 > 来源:=uniqroom> 确定

希望这能在某种程度上解决你的问题:)

答案2

你确实不能使用同一个单元格来实现这一点。

你可以使用它旁边的单元格。虽然看起来 Robert Schmidt 的答案可行,但对于同一功能,另一种(在我看来更简单)的方法是此处列出

它使用相同的想法,但只需要一个简单的公式。从你的问题描述来看,你实际上并不需要动态范围(尽管它们很酷)。

该方法的要点是将用户选择排列在一个表中,第一个选择位于左侧,然后每个后续选择列在右侧的不同列中。

例如走廊#34 | 房间 1 | 房间 2 | 房间 3.....

然后使用名称管理器和从选择工具创建名称,您可以自动将第一列中的每个走廊作为“名称”分配给同一行中的房间。

最后,使用“按列表进行数据验证”功能创建下拉列表,一个用于选择走廊,另一个用于选择房间。通过在第二列的数据验证中使用简单的 =INDIRECT 公式,使第二个列表依赖于第一个列表。

我建议您跳到评论部分,因为那里的用户指出您可以使用 =SUBSTITUTE 函数来处理走廊和房间值中的空间。

相关内容