先看上面题目,许多人第一眼会觉得很简单,感觉就像一个一维转二维,那可就大错特错了,仔细看一下,右边的结果,为什么白菜萝卜会出现多次,为什么订单号在一个商品下没有全部合并,这时候再仔细看下面的红字,要求是,两个订单内的商品列表名称完全相同,则算为同组合并,开始烧脑吧,张口就说很简单的同学,给你20分钟,去写代码吧,写完了评论区贴出来我给你点赞,写不出来自己罚站!
昨天这个题本身是我们JSA群里一个同学发的一个练习题,我觉得挺好,用JSA先做了一个结果,当然因为有JSA880框架的存在,这个题6行代码就解决了,但是思路还是不简单的,昨天晚上直播讲了1个多小时,详细的思路从函数+手工到代码实现,代码也讲了两种方式,这里先贴出JSA的代码
真正想学的人 建议不要看答案 先自己独立完成,正常情况下2个小时以内能做出来,都算是学的不错了的,从看题到出代码结果一个小时完成就算是高手了!基本就是数组字典滚瓜烂熟了
看变量名就可以看出计算过程了,实际就是完全模拟手工计算的过程,先按单号合并商品名称 再按商品名称合并订单分组,再按订单分组分组汇总结果过,这个可以用下面的辅助表完整看到中间计算过程,这里如果理解透彻的话,到合并品名辅助列完成的时候,就可以直接按合并品名分组汇总结果了,再结果中对合并的订单号去重即可。
用VBA解的话,自然是数组+字典,其实原理是一样的,只是VBA的循环写起来代码长一点,这里给一个写的比较好的代码,虽然我不推荐这个里面使用一个字典记录了两组key-item的写法,但是确实这样写代码比一般的写法要短一点点。。。
联系客服