今天拿到WPS的最新版本,更新的其中之一函数LET是古老师一直盼望的一个新函数,这个函数最大的优势就是在需要多次引用的时候可以用LET函数来定义对应的名称,从而让公式的长度大大的简化了。

结合一个需求来说明LET函数的用法,有一组数据,一个合同对应多个工序,每工序都有对应的数量,现在需要转换成表2的显示方式:

同一个合同对应的工序合并到一个单元格

相对工序的数量汇总到一起,并求和

数据如下图1所示:

WPS新函数LET让公式的长度大大的简化了

图 1

需求分解:

看到需求后,直接反应就是一个一维报表转二维报表并连接的需求。

一个合同对应多个工序,这里可以用筛选函数筛选

筛选出来的后结果,用多条件求和函数求和

求和后的结果用文本连接符号连接;

把多维数据转成一行数据,并用连接函数连接到一个单元格上面;

模拟结果如下图2所示:

WPS新函数LET让公式的长度大大的简化了

图 2

对合同去重

需要对表1变形成表2,第一步把表1的合同数据去重。

录入函数:

=UNIQUE(B3:B10)

效果如下图3所示:

WPS新函数LET让公式的长度大大的简化了

图 3

筛选合同对应工序

有了合同号后,利用筛选函数配合去重函数可以把一张合同对应的工序筛选出来。

录入函数:

=UNIQUE(FILTER(D3:D10,B3:B10=F3))

函数释义:

筛选工序,条件为合同号等于F3的合同,再通过UNIQUE删除对应的重复项。

效果如下图4所示:

WPS新函数LET让公式的长度大大的简化了

图 4

汇总工序的数量

上面通过筛选函数得到合同对应工序的唯一值,此时就可以用多条件求和函数对合同对应的工序数量进行求和了。

录入函数:

=SUMIFS(C:C,B:B,F3,D:D,G3#)

函数释义:

这是一个二条件的汇总求和,需要满足“合同、工序”的条件,求和区域为C列数量;

效果如下图5所示:

WPS新函数LET让公式的长度大大的简化了

图 5

为数量添加隔断

为了后续合并成同一个单元格后,不同工序和汇总数量需要有一个隔断的效果,这里用文本连接符号来解决这个问题。

录入函数:

=”:(“&SUMIFS(C:C,B:B,F3,D:D,G3#)&”),”

函数释义”

通过文本连接符号“&”与号多次连接隔断符号(左括号、右括号、逗号)

效果如下图6所示:

WPS新函数LET让公式的长度大大的简化了

图 6

合并成一个单元格

到了上面这一步基本上就完成了,剩下的就是合并转置了。

把两个区域连接到一起:

=HSTACK(G3#,H3#)

再转置:

=TOROW(I3#)

再合并:

=CONCAT(TOROW(HSTACK(G3#,H3#)))

完成后效果如下图7所示:

WPS新函数LET让公式的长度大大的简化了

图 7

利用LET简化公式

上面通过辅助列的方法,一步一步把结果写出来了,现在就轮到LET上场了,定义第一个:

名称:A

公式:UNIQUE(FILTER(D3:D10,B3:B10=F3)),筛选合同的去重工序名称

录入公式:

=LET(A,UNIQUE(FILTER(D3:D10,B3:B10=F3)),CONCAT(TOROW(HSTACK(UNIQUE(A),”:(“&SUMIFS(C:C,D:D,A,B:B,F3)&”),”))))

效果如下图8所示:

WPS新函数LET让公式的长度大大的简化了

图 8

合并完后,发现需要把最后一个逗号去除,此时可以再来一次LET

名称:B

公式:

=LET(A,UNIQUE(FILTER(D3:D10,B3:B10=F3)),CONCAT(TOROW(HSTACK(UNIQUE(A),”:(“&SUMIFS(C:C,D:D,A,B:B,F3)&”),”))))

录入公式:

=LET(B,LET(A,UNIQUE(FILTER(D3:D10,B3:B10=F3)),CONCAT(TOROW(HSTACK(UNIQUE(A),”:(“&SUMIFS(C:C,D:D,A,B:B,F3)&”),”)))),LEFT(B,LEN(B)-1))

函数释义:

先判断B的长度,再用LEFT从左边开始提取B的长度少1个字符的字段。

效果如下图9所示:

WPS新函数LET让公式的长度大大的简化了

相关新闻

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

立即咨询 企业版试用 上门服务

请您留言

感谢您的关注,你可留下联系方式,我们将第一时间与您联系。