无需下拉即可从Excel日期列提取唯一不重复值的公式修改求助
问题背景
我在Calc Sheet工作表中有一个Selected Countries表格,每个单元格都设有下拉列表,可从Holidays表中选择特定国家/地区。
我在Calc Sheet的E2单元格编写了如下公式,用于提取选中国家/地区对应列中的日期:
=IFERROR(INDEX(HolidayList[#All],ROW(HolidayList[#All]),TRANSPOSE(MATCH(CHOOSE({1;2;3;4;5},$A$2,$A$3,$A$4,$A$5,$C$2),TRANSPOSE(HolidayList[#Headers]),0))),"")
我在L列编写了如下公式,用于合并选中国家/地区的日期,生成单一的唯一不重复值(无重复)日期列:
=IFERROR(SMALL(SelectedHolidays,ROW(INDIRECT("1:"&COUNT(SelectedHolidays)))),)
该公式可自动列出所有日期,无需手动下拉填充到每个单元格。现在需要修改该公式,使其能够直接生成单一的唯一不重复日期列,同样不需要手动下拉填充。我已在NamedRanges工作表中列出了工作簿中创建的所有命名区域。
补充说明
我已经通过FREQUENCY函数实现了无需下拉生成唯一日期列表,但公式中MATCH函数返回的行数组中存在针对重复值的#VALUE!错误,请问如何排除该数组中的#VALUE!错误?
出问题的公式如下:
=SMALL(MDHolidays,IF(FREQUENCY(MDHolidays,MDHolidays)>0,MATCH(MDHolidays,MDHolidays,0),""))
解决方案
方案1:兼容现有逻辑的修正版
直接在MATCH表达式外层嵌套IFERROR过滤错误值,将错误值转为空值忽略即可,修正后公式:
=IFERROR(SMALL(MDHolidays,IF(FREQUENCY(MDHolidays,MDHolidays)>0,IFERROR(MATCH(MDHolidays,MDHolidays,0),""),"")),"")
旧版Excel按Ctrl+Shift+Enter三键结束输入,365/2021及以上支持动态数组的Excel版本直接回车即可自动溢出所有唯一排序后的日期,无需手动下拉填充。
方案2:动态数组版本极简写法
如果你使用的是支持动态数组的Excel版本,可以直接用内置的UNIQUE+SORT函数实现需求,逻辑更清晰无冗余,也不会出现错误值问题:
=SORT(UNIQUE(MDHolidays))
输入后回车即可自动向下溢出所有去重后按升序排列的日期。
内容的提问来源于stack exchange,提问作者sifar
相关产品推荐
相关产品推荐

