秋叶 Excel 在小 E 的认真打理下,越来越火爆。为了回馈粉丝,小 E 做了一场「直播惊喜活动」,产品限额,惊喜满满。但是小 E 在发货的时候,发现有不少粉丝下单了多个不同的产品。这时他就在想,如果都分开发货,单纯计件的话,物流成本有点高,本着省钱原则,他就在想要不就试试合并发货。所以,小 E 需要将同个姓名,同个手机号,同个地址的客户所购买的不同产品合并起来形成一条订单数据,进行合并发货,以节约成本。处理后如下图,我们可以看到,小爽用了不同账号多次下单了 Excel 这本书:PS:由于地址比较长,所以案例中我们只对同个姓名,同个手机号进行合并处理。那么问题来了,这个处理应该怎么做?不怕,这是小 E 的强项啊。🤔🤔🤔适用版本:Office2021,Office365,WPS2022由于存在不同账号同一个购买者的情况下,所以我们需要先利用 Countif 函数统计不同产品的汇总个数。=COUNTIFS($B$2:$B$18,I2,$D$2:$D$18,G2,$E$2:$E$18,H2)
后面的问题,就转变成基于姓名和手机号列合并汇总产品名称的问题。接下来,我们进行合并发货数量的操作(合并同类项)。这一步,主要是去除原始姓名列和手机列的重复值,方便后面的筛选和合并。FILTER 函数,根据姓名列和手机列筛选产品名称与汇总个数。=FILTER($I$2:$I$15&'*'&$J$2:$J$15,($G$2:$G$15=L2)*($H$2:$H$15=M2))
Filter 函数是一个筛选函数,它可以将数组中条件为 True 的结果筛选出来。=FILTER(要筛选的数组或区域,筛选条件,[是否忽略空值])
=TEXTJOIN(';',1,FILTER($I$2:$I$15&'*'&$J$2:$J$15,($G$2:$G$15=L2)*($H$2:$H$15=M2)))
=Textjoin(分隔符,是否忽略空值,数组/单元格区域)
如果要忽略空值就填 TRUE,不忽略空值就填 FALSE。如果你是 Office2016 以上版本,且没有 Filter 函数,也可以使用 if 函数替代, 只不过运算效率会差一点。而由于公式是数组公式,所以公式输入完成后,还需要使按数组三键【Ctrl+Shift+Enter】结束。=TEXTJOIN(' ; ',1,IF(($G$2:$G$15=L2)*($H$2:$H$15=M2),$I$2:$I$15&'*'&$J$2:$J$15,''))
如果你不想使用辅助表,也可以利用一个公式搞定!不过该方法仅局限于 Office365。=TEXTJOIN(' ; ',1,
LET(a,FILTER($B$2:$B$18,($D$2:$D$18=G2)*($E$2:$E$18=H2)),
MAP(
UNIQUE(a),
LAMBDA(t,t&'*'&COUNTA(FILTER(a,a=t)))
)
)
)
❶ 筛选指定 姓名和手机号 对应的产品名称(filter),名称定义为 a,方便后面进一步筛选计数(let)。❷循环(map)去重后的产品名称(unique),将每一个产品名称进一步筛选并计数(filter,counta),用'*'拼接。函数方法灵活,不过受限于版本 。那么有没有更简单的方法 ?答案是有的,就是利用插件。
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请
点击举报。