求Google Sheets中计算纸箱容纳产品数量的函数方案
问题与解决方案:Google Sheets计算产品装箱数量
问题背景
需要在Google Sheets中自动计算产品可装入集合纸箱的最大数量,此前用体积换算的方法存在明显误差:
- 计算得出Product 1可装入Big Shelves纸箱93件,但实际数量远低于此
- 计算得出可装入Mezzanine纸箱16件,但实际上产品长度超过了该纸箱的最大维度,根本无法装入
现有尺寸数据
产品尺寸
| product | length | width | height |
|---|---|---|---|
| product 1 | 736 | 82 | 44 |
集合纸箱尺寸
| carton | length | width | height |
|---|---|---|---|
| Big Shelves | 1050 | 390 | 600 |
| Mezzanine | 600 | 270 | 260 |
核心问题
体积换算只考虑总体积,忽略了产品与纸箱的尺寸匹配限制——产品的长/宽/高(允许旋转)必须全部小于等于纸箱的对应维度,且排列方式直接影响可装数量。
解决方案
1. 先验证产品是否可装入纸箱(允许旋转)
将产品和纸箱的三个维度分别排序,若产品的最小/中间/最大维度均小于等于纸箱的对应维度,则可以装入;否则直接返回0。
2. 计算最大可装数量(遍历所有排列方式)
产品有6种维度排列组合(对应纸箱的三个维度),分别计算每种排列下的可装数量(长方向数量×宽方向数量×高方向数量),取最大值。
示例Google Sheets公式
假设产品尺寸在单元格A2:C2,纸箱尺寸在E2:G2,使用LET函数简化逻辑:
=LET( prod_dims, SORT(A2:C2), cart_dims, SORT(E2:G2), // 先判断是否能装入 can_fit, AND(prod_dims[1]<=cart_dims[1], prod_dims[2]<=cart_dims[2], prod_dims[3]<=cart_dims[3]), IF(NOT(can_fit), 0, // 计算所有6种排列的可装数量,取最大值 MAX( FLOOR(E2/A2)*FLOOR(F2/B2)*FLOOR(G2/C2), FLOOR(E2/A2)*FLOOR(F2/C2)*FLOOR(G2/B2), FLOOR(E2/B2)*FLOOR(F2/A2)*FLOOR(G2/C2), FLOOR(E2/B2)*FLOOR(F2/C2)*FLOOR(G2/A2), FLOOR(E2/C2)*FLOOR(F2/A2)*FLOOR(G2/B2), FLOOR(E2/C2)*FLOOR(F2/B2)*FLOOR(G2/A2) ) ) )
注意:确保产品和纸箱的单位统一(比如都是mm或都是m),否则需要先做单位转换。
针对你的数据的计算结果
- Mezzanine纸箱:Product 1最长维度736 > 纸箱最长维度600,返回0
- Big Shelves纸箱:遍历所有排列后,最大可装数量为56件(比如产品长736对应纸箱长1050,宽44对应纸箱宽390,高82对应纸箱高600:1×8×7=56)
内容的提问来源于stack exchange,提问作者VoDAyToN
相关产品推荐
相关产品推荐

