我正在尝试为高中创建一个依赖下拉列表。用户将选择单元格 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 函数来处理走廊和房间值中的空间。