
老王是浙江云欣电机装配公司仓库管理员, 2023年9月月末盘点时对存放在各车间的下表中配件材料进行仔细盘点,并记录在表交于财务部门作存货盘点报表上报,你作为核算员收到此表后怎么进行汇总?

【汇总要求】:(在汇总表后增加二列)
“库存合计1”:用“??箱+?包”表示
“库存合计2”:每箱24包,当合计中包数超过24时,要进位到箱,并用“??箱+?包”表示

一、PowerQuery方法
1、将基础数据加载到PowerQuery中,并复制一份新的查询

2、在复制得到的新查询“盘点表(2)”中进行逆透视

3、按分隔符“+”对值列进行拆分成“箱”和“包”二列

4、分别替换掉列中的文本字符“箱”和“包”,并设置数字格式为整数

5、按品名进行“分组依据”

6、到此,再复制“盘点表(2)”一份新查询为“盘点表(3)”
7、在“盘点表(2)”中为“箱”和“包”二列数据添加后缀“箱”和“包”

8、合并“箱”和“包”二列,分隔符号为“+”

9、重命名列为“库存合计1”

10、在“盘点表(3)”中添加自定义列,将箱和包的数量折合成包

11、计算箱的数量

12、计算包的数量

13、重命名列,删除其他无关的列。并给“箱”和“包”列添加后缀“箱”和“包”

14、用分隔符“+”合并“箱”和“包”列,并重命名列为“库存合计2”

15、在“盘点表”中合并查询“盘点表(2)”中“库存合计1”

扩展行后得到:

16、同样方法在“盘点表”中合并查询“盘点表(3)”中“库存合计2”

17、关闭并上载至EXCEL,将查询“盘点表”以表的形式加载到工作表

这样。当以后“盘点表”中的数据发生改变后,只要在数据选项卡中“全部刷新”,就能直接生成计算的结果。用起来是不是很简单。
二、IMSUM函数方法
解题思路:
IMSUM函数返回两个复数的和,如:=IMSUM("3+4i","5+3i")返回结果为8+7i
复数“3+4i”的实部和虚部非常近似本案例中“13箱+18包”样式,如果我们能将“13箱+18包”转换成“13+18i”形式,则用IMSUM函数就能进行计算了。
1、用文本替换函数SUBSTITUTE函数将“箱”替换为空,将“包”替换为“i”
2、用IMSUM函数将替换后的结果求和
3、再用SUBSTITUTE函数将求和的结果反向替换
“库存合计1”在单元格G8输入公式并向下填充:
=SUBSTITUTE(SUBSTITUTE(IMSUM(SUBSTITUTE(SUBSTITUTE(C8:F8,"箱",),"包","i")),"+","箱+"),"i","包")
注意:非2019或365的新版本要用数组公式三键结束。

“库存合计2”的计算分二步进行:
1、先要用宏表函数EVALUATE计算出文本表达的计算结果,3箱+4包=76包
2、再用INT+MOD函数折合成??箱?包。
宏表函数只能在定义名称中使用,并要将工作簿另存为启用宏的.xlsm格式。
定义名称:计算包=EVALUATE(SUBSTITUTE(SUBSTITUTE(案例01!$G8,"箱","*24"),"包",))

在单元格H8输入公式并向下填充:
=INT(计算包/24)&"箱+"&MOD(计算包,24)&"包"

如果不使用定义名称,要直接生成结果则使用公式:
=INT((LEFT(G8,FIND("箱",G8)-1)*24+LEFT(MID(G8,FIND("+",G8)+1,99),LEN(MID(G8,FIND("+",G8)+1,99))-1))/24)&"箱+"&MOD(LEFT(G8,FIND("箱",G8)-1)*24+LEFT(MID(G8,FIND("+",G8)+1,99),LEN(MID(G8,FIND("+",G8)+1,99))-1),24)&"包"
通过二种方法,虽然我们学到了好多EXCEL技能,但是如果当初有标准规范的原始数据,我们还用得着这么用心的学习这些方法和技巧吗?