去重不求人:学会”UNIQUE+TOCOL”组合工作真轻松!背后组合套路更强劲
应用场景:
某公司有张山等5名员工,前3季度均外出学习1次或多次,现对外出学习情况进行清理。
一、每季度有哪些员工外出学习。
公式:
=UNIQUE(A2:A7)
向右填充公式即可。

解析:
UNIQUE第二参数、第三参数均采用默认值,表明对单列去重,无论出现一项或多项均保留一项。

二、现要求每名员工每年至少外出学习两次,则第4季度哪些员工必须外出学习。
公式:
=UNIQUE(TOCOL(A2:C7),,1)

解析:
TOCOL(A2:C7)将前3季度名单转为一列,作为UNIQUE去重的数组参数。
UNIQUE(……,,1)第二参数采用默认值,第三参数1,表明保留仅出现一次的项。
三、技能升级:REDUCE+HSTACK组合套路功能强劲!
问题一中,如需数组公式可采用”REDUCE+HSTACK”组合解决:
=LET(a,REDUCE(1,A1:C1,LAMBDA(X,Y,HSTACK(X,UNIQUE(OFFSET(Y,1,,6))))),IFNA(DROP(a,,1),””))
公式看似较为复杂,实际核心计算表达式仍为UNIQUE去重,即公式中”UNIQUE(OFFSET(Y,1,,6))”部分。
具体来说:
REDUCE定义初始值为1,A1:C1为需要传递的参数,LAMBDA命名初始值为”X”,传递的参数为”Y”(依次为A1、B1、C1)。
当传递第一个参数时,”UNIQUE(OFFSET(Y,1,,6))”为”UNIQUE(OFFSET(A1,1,,6))”,即”UNIQUE(A2:A7)”;
HSTACK(X,UNIQUE(OFFSET(Y,1,,6)))表明将初始值与传递计算的结果平行堆砌起来。
这样,依次传递完成计算,得到如下结果:

LET将上图中REDUCE计算结果命名为a,计算表达式为”IFNA(DROP(a,,1),””)”。
也就是DROP将第一列无用数据删除,IFNA将HSTACK合并时产生的”#N/A”去除为空白完成计算。


