excel函数技巧:offset+reduce确定部门人数并提取出来-趣帮office教程网

如图:D列数据很不规范,将部门与姓名混在了一起。如何根据G1的部门名称将这个部门所有员工的名字都提取出来?,公式如下:

=OFFSET(信息表!D1,XMATCH(G1,信息表!$D$2:$D$26) 1,,SUM(REDUCE(0,SEQUENCE(10),LAMBDA(x,y,LET(a,OFFSET(信息表!$D$1,XMATCH(G1,信息表!$D$2:$D$26),,y),VSTACK(x,IF(OR(a=""),0,IF(COUNT(FIND("部",a))=1,1,0)))))))-1)

公式思路:提取部门名称在上姓名在下的数据一般使用offset xmatch,本例最关键是的如何确定要提取行的长度作为offset的四参。

本例是用的reduce函数,将部门名称以下1-10行分别作为offset的四参目标数,逐个验证。从面找到正确的数量。

验证规划:COUNT(FIND("部",a))=1,也就是计数部在选取的数据中出现的资料,如果出现两次就说明行数已经到了另一个部门名称,以后的取数全部为0,把有效的数据相加再减去1即是正确的行数。