excel函数技巧:reduce+xmtach+filter为重复数据加序号-趣帮office教程网

如图A列为源数据,其中有些数据为重复数据,要求将重复的数据加上A、B、C……这样的序号以便加以区分,利用reduce一个公式全部生成的方式如下:

=DROP(REDUCE("",A2:A16,LAMBDA(x,y,LET(

a,FILTER(IF(A2:A16<>"",SEQUENCE(ROWS(A2:A16)) 1),A2:A16=y),

r,LEFT(ADDRESS(1,XMATCH(ROW(y),a),4,,),1),VSTACK(x,y&IF(ROWS(a)=1,"",r)))

)),1)

公式思路:利用索引位置进行判断,得出其在相对重复数据中的位置,再通过address函数得出具体的字母。亮点是a变量,也就是filter函数的使用:直接提报了每个重复数据的所有行索引,同时利用reduce函数可以引用位置信息的特点,使用xmatch函数到得所有数据在变量a中的位置。

这个题目是为了使用一键输出功能特别设计的方法,如果使用拖拉功能那最简单的方法应该是利用countifs函数,然后再通过char或者address函数转化成字母。当然,也可以将他们两者结果起来:

=MAP(A2:A16,LAMBDA(x,IF(COUNTIF(A2:A16,x)=1,x,x&CHAR(COUNTIF(A2:x,x) 64))))

这个公式最巧妙的地方在于A2:x,这个直接将变量如单元格组成了实际的单元格数组。