![取决于相邻单元格的活动/非活动状态的下拉列表(Excel 2010)](https://linux22.com/image/1625880/%E5%8F%96%E5%86%B3%E4%BA%8E%E7%9B%B8%E9%82%BB%E5%8D%95%E5%85%83%E6%A0%BC%E7%9A%84%E6%B4%BB%E5%8A%A8%2F%E9%9D%9E%E6%B4%BB%E5%8A%A8%E7%8A%B6%E6%80%81%E7%9A%84%E4%B8%8B%E6%8B%89%E5%88%97%E8%A1%A8%EF%BC%88Excel%202010%EF%BC%89.png)
我正在使用 Excel 2010
我有一张电子表格来记录我的时间收费。表 1 中列出了所有收费编号,我使用另一张表中的下拉列表来选择每个工作时间段要使用的收费代码。
我希望有一列来指定每个代码是有效还是无效,以便用于在表 1 中进行筛选。我的问题是所有代码都显示在下拉列表中,因此它变成了一个长列表。有没有办法创建一个仅显示“有效”费用代码的下拉列表?
答案1
为了保持井然有序,请确保包含代码的列名为“代码”
- 添加表格列“active”来标记活动(用于
TRUE
活动代码) - 使用公式添加表列“选定的代码”
=IF([@active],[@code],"")
此列仅显示活动代码,但仍在原始行上。
现在,您可以通过引用下拉列表的此列并在设置了哪些代码处于活动状态后对活动列上的表格进行排序来完成此操作。如果您想自动获取排序列表,请继续。
- 添加表格列“活动代码 ID”,并输入以下公式:
=IF([@[selected codes]]="","",COUNT($C$2:[@[selected codes]]))
$C$2 应替换为“选定代码”列顶行的绝对引用。这将为所有选定代码提供唯一的编号。 - 添加表列“过滤代码”,并在顶部单元格中输入公式:
=IFNA(INDEX([code],MATCH(ROW(A1),[active code ID],0)),"")
这将在第一行中找到 ID 1 的代码,在第二行中找到 ID 2 的代码,等等...
现在,如果您真的想要更花哨的功能并让下拉列表在您添加新条目时自动展开,请执行以下操作:
- 创建一个名为“list_codes”的命名范围,并将其输入
=Table1[filtered codes]
到“引用:”框中 - 创建下拉菜单时,将数据验证
=list_codes
作为源。
现在您应该有一个下拉列表,当您更新活动列时它会自动更新和排序,当您展开表格时它也会更新。