今天拿到了最新版本的WPS,其中一个更新的函数let是顾老师一直期待的一个新函数,这个函数最大的好处是,当你需要多次引用的时候,可以使用let函数来定义对应的名称,这样公式的长度就大大简化了。
结合一个要求来说明let函数的使用,有一组数据,一个合约对应多个进程,每个进程都有对应的数量,现在需要换算成表2中的显示方法:
与同一合约对应的操作被合并到一个单元中。
将相对运算的数量相加并求和。
数据如下图 1 所示
图 1 显示了这些要求,直接响应是将 1D 报告转换为 2D 报告并连接的要求。
一个合约对应多个进程,可以使用 filter 函数进行过滤。
过滤后的结果通过多条件求和函数求和。
总和的结果由文本连接符号连接;
将多维数据转换为一行数据,并使用连接函数将其连接到单元格
仿真结果如下图2所示
图 2 需要将表 1 转换为表 2,第一步是对表 1 中的合约数据进行去重处理。
输入函数:unique(b3:b10)。
效果如下图3所示
图3 有了合同编号后,可以使用筛选功能和去重功能过滤掉合同对应的流程。
输入函数:unique(filter(d3:d10,b3:b10=f3))。
功能说明:筛选合约编号等于F3的合约的流程,然后通过unique删除对应的重复项。
效果如下图4所示
图4使用过滤函数获取合约对应流程的唯一值,然后可以使用多条件求和函数对合约对应的工序数求和。
输入函数:sumifs(c:c,b:b,f3,d:d,g3
函数解释:这是两个条件的总和,需要满足“约定和流程”的条件,总和面积为c列的数量
效果如下图5所示
图5 为了以后合并到同一个单元格中,需要对不同的流程和汇总数量进行分区效应,这里通过使用文本连接符号来解决这个问题。
录入功能:":("&sumifs(c:c,b:b,f3,d:d,g3#
功能定义:“通过文本连接符号”>“多次连接分区符号(左括号、右括号、逗号)
效果如下图6所示
图 6 基本上完成了上述步骤,剩下的就是合并转置。
将两个区域连接在一起:
hstack(g3#,h3#
转置:torow(i3
重新合并:concat(torow(hstack(g3,h3
完成的效果如下图7所示:
图 7 通过辅助列方法逐步写出结果,现在轮到 let 定义第一个结果了:
名称:公式: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 所示
图8 合并后,发现需要去掉最后一个逗号,可以再做一次
名称: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所示
跟顾哥一起学习PMC生产策划和运营,一辈子够吗?