Excel 水果分箱难题,一朝得解 – 满重即分箱,不到半箱不发

文摘   科技互联网   2025-01-25 11:03   上海  
公众号平台最新的推送规则对技术类文章不太友善,如果不想错过干货,请务必 “设为星标”哦!!!


点击上方蓝字 --> 点击“...”--> 选择“设为星标


老读者应该知道,我经常鼓励大家学习并使用 Power Query。


哪怕是同一个案例,我也常常会给出包括 Power Query 在内的多个解决方案,相较其他方案而言,PQ 看似操作繁琐,其实是最简单的解法。


比如下面这个水果订单数和实际发货数的计算,如果用公式,会非常麻烦,但是用 Power Query 的话,几乎不用动什么脑筋就能完成。


案例:


下图 1 是水果的订单表和实际发货规则,规则如下:

  • 水果 5.5元/公斤;

  • 每一个箱子最多能装 10 公斤,所以超过 10 公斤需要分箱包装;

  • 如果每箱不满 10 公斤,则至少要 5 公斤才能发;不满 5 公斤的零头,不予以发货。

请根据以上规则,分别统计:

  • 每个人的订单各需要装几箱?

  • 按发货规则,没人最终实际发货多少公斤?

  • 根据实际发货重量,计算总价


效果如下图 2 所示。


解决方案:


1. 选中数据表的任意单元格 --> 选择菜单栏的“数据”-->“从表格”


2. 在弹出的对话框中点击“确定”


数据表就上传至了 Power Query。


3. 选择菜单栏的“添加列”-->“自定义列”


4. 在弹出的对话框中进行以下设置 --> 点击“确定”:

  • 新列名:输入“每箱重量(公斤)”

  • 在公式区域输入以下公式:

    = List.Transform(List.Split({1..[#"订单(公斤)"]},10),List.Count)


5. 点击“每箱重量(公斤)”列标题旁边的扩展按钮 --> 选择“扩展到新行”


6. 点击“每箱重量(公斤)”列标题旁边的筛选箭头 --> 在弹出的菜单中选择“数字筛选器”-->“大于或等于...”


7. 在弹出的对话框的“大于或等于”旁边输入“5”--> 点击“确定”


现在的结果,不仅完成了分箱,还扣除了不满 5 公斤的零头。


8. 点开左边的查询区域 --> 选中 Table1 --> 右键单击 --> 在弹出的菜单中选择“复制”


于是就复制出一个完全一样的查询。


9. 选中 Table1 (2) --> 选择菜单栏的“主页”-->“分组依据”


10. 在弹出的对话框中选择“高级”--> 按以下方式设置 --> 点击“确定”:

  • 第一个下拉菜单:选择“姓名”

  • 新列名:输入“箱数”

  • 操作:选择“对行进行计数”

点击“添加聚合”按钮,会出现一行新的设置框:

  • 新列名:输入“实际发货(公斤)”

  • 操作:选择“求和”

  • 柱:选择“每箱重量(公斤)”


11. 选中查询区域的 Table1 --> 选择菜单栏的“主页”-->“合并查询”


12. 在弹出的对话框中按以下方式操作 --> 点击“确定”:

  • 选中 Table1 的“姓名”列

  • 在下拉框中选择 Table1 (2)

  • 选中“姓名”列

  • 联接种类:选择“左外部(第一个中的所有行,第二个种的匹配行)”


13. 点击 Table1(2) 旁边的扩展按钮 --> 在弹出的对话框中进行以下设置 --> 点击“确定”:

  • 勾选“箱数”和“实际发货(公斤)”

  • 取消勾选“使用原始列名作为前缀”


14. 继续选中 Table1 --> 选择菜单栏的“添加列”-->“自定义列”


15. 在弹出的对话框中按以下方式设置 --> 点击“确定”:

  • 新列名:输入“总价”

  • 将右侧的“实际发货(公斤)”列插入到左侧的公式区域 --> 在后面输入“*5.5”


16. 选择菜单栏的“主页”-->“关闭并上载”-->“关闭并上载至...”


17. 在弹出的对话框中选择“仅创建连接”--> 点击“加载”


18. 在右侧的区域选中 Table1 --> 右键单击 --> 在弹出的对话框中选择“加载到...”


19. 在弹出的对话框中选择“表格”-->“现有工作表”--> 选择所需上载的位置 --> 点击“确定”


绿色区域就是最终的统计结果,蓝色区域的数据今后如有更新,只要刷新绿色区域,就能实时同步结果。是不是比使用公式简单得多?


转发、点赞、在看也是爱!

Excel学习世界
你遇到的所有 Excel 坑,我都帮你趟过了。
 最新文章