Excel中基于指定列条件的动态参数提取唯一值方法
嘿,这个需求挺典型的,我分两种Excel版本的情况给你讲清楚,毕竟不同版本的函数支持差异挺大的:
针对支持动态数组的Excel版本(365/2021及以后)
这是最省心的方案,直接用FILTER+UNIQUE组合就能搞定:
=UNIQUE(FILTER(Table_Arch[你要提取唯一值的列名], Table_Arch[ColumnA]="1"))
- 先看内层的
FILTER函数:它会把Table_Arch表格里所有**ColumnA列值为"1"**的目标列数据筛选出来; - 外层的
UNIQUE函数会自动对筛选后的结果去重,而且结果是动态溢出的——不用手动下拉填充,公式所在单元格会自动把所有唯一值列出来。
记得把公式里的[你要提取唯一值的列名]换成你实际要处理的列,比如如果是要提取ColumnB的唯一值,就改成Table_Arch[ColumnB]。
针对旧版Excel(不支持动态数组,比如2019及更早)
这种情况得用数组公式来实现,假设你打算把结果放在单元格C1开始的位置:
- 在C1单元格输入下面的公式:
=INDEX(Table_Arch[目标列], MATCH(0, COUNTIF($C$1:C1, Table_Arch[目标列])*(Table_Arch[ColumnA]<>"1"), 0))
- 输入完成后,不要直接按回车,需要按
Ctrl+Shift+Enter组合键来触发数组公式; - 下拉C1单元格直到出现#N/A,就表示所有符合条件的唯一值都提取完了。
简单解释下原理:
COUNTIF($C$1:C1, Table_Arch[目标列])用来统计已经提取过的值,避免重复输出;*(Table_Arch[ColumnA]<>"1")会把ColumnA不等于"1"的行直接排除在外;MATCH(0,...)找到第一个还没被提取的符合条件的值,最后用INDEX取出对应的数据。
同样,记得把公式里的[目标列]替换成你实际要提取的列名哦。
内容的提问来源于stack exchange,提问作者al1en




