Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 5769|回复: 22

最少用料求助!

[复制链接]
发表于 2014-11-7 14:52 | 显示全部楼层 |阅读模式
别人问我的~想不出来,故求助!详见附件

求助.rar

6.32 KB, 下载次数: 26

发表于 2014-11-7 15:02 | 显示全部楼层
这儿有肥猫 这个跑腿没跑明白  ^^
不只是柜子的长和宽
还要知道柜子的深和结构,
结构有几个横层、门板用什么材料、后板用什么材料 ...
看样这不是excel能解决的东西,
应该用CAD才可以啊~
回复

使用道具 举报

 楼主| 发表于 2014-11-7 15:09 | 显示全部楼层
baksy 发表于 2014-11-7 15:02
这儿有肥猫 这个跑腿没跑明白  ^^
不只是柜子的长和宽
还要知道柜子的深和结构,

baksy~~高手来了~~非常感谢。其实并不需要知道那么多关于橱柜的信息,只要知道有这么多的小板,最少需要用多少块基础板,基础板怎么切就OK?
回复

使用道具 举报

发表于 2014-11-7 15:18 | 显示全部楼层
这儿有肥猫 发表于 2014-11-7 15:09
baksy~~高手来了~~非常感谢。其实并不需要知道那么多关于橱柜的信息,只要知道有这么多的小板,最少需要用 ...

就算四个侧板,也得有个深度(或柜子厚度)才可以算啊   ^ ^
回复

使用道具 举报

 楼主| 发表于 2014-11-7 15:29 | 显示全部楼层
baksy 发表于 2014-11-7 15:18
就算四个侧板,也得有个深度(或柜子厚度)才可以算啊   ^ ^

可能是我提问方式有些问题,现在把条件改改:
条件:
1. 需要用基础板裁成若干张规格不一致的小板,小板规格可见附件。
2. 基础板材尺寸固定,2400*1200。(厚度不考虑)
求助:
1. 最少需要多少块基础板材?
2. 每块基础板材各需做成多少数量何种规格的小板?

求助.rar

6.36 KB, 下载次数: 7

回复

使用道具 举报

发表于 2014-11-7 15:44 | 显示全部楼层
任意一块小板,都不可以用基本版中剩余板块来拼接?

比如某种小板规格是2*2,而基本版的剩余面积是1*5,那么不可以截取4个1*1,用来拼接成该小板,是吗?
回复

使用道具 举报

 楼主| 发表于 2014-11-7 15:50 | 显示全部楼层
爱疯 发表于 2014-11-7 15:44
任意一块小板,都不可以用基本版中剩余板块来拼接?

比如某种小板规格是2*2,而基本版的剩余面积是1*5, ...

是不可以用剩余板块拼接的,只能切,不能拼
回复

使用道具 举报

发表于 2014-11-7 16:27 | 显示全部楼层
觉得想到的思路好像可行,
思路:循环判断剩余小板们,从中挑出能被基本版的剩余切割的最大那块小板来切,直到再找不到小板,就s=s+1。接着,重新循环判断剩余小板们,同上步骤。
最终,所有小板们都被切过了。s就是基本版的消耗数量。

但具体实现的方法,现在还像一团打结了绳子。。。。
回复

使用道具 举报

 楼主| 发表于 2014-11-7 16:54 | 显示全部楼层
爱疯 发表于 2014-11-7 16:27
觉得想到的思路好像可行,
思路:循环判断剩余小板们,从中挑出能被基本版的剩余切割的最大那块小板来 ...

真是棘手{:1212:}
回复

使用道具 举报

发表于 2014-11-7 17:11 | 显示全部楼层
Sub test()
    Dim arr, base(1), tmp, d, i, j, s, baseWidth, baseHeight

    '初值
    arr = [a3:c22]
    baseWidth = [f1]: baseHeight = [g1]
    base(0) = baseWidth: base(1) = baseHeight

    'key是序号,item是小板规格
    Set d = CreateObject("scripting.dictionary")
    For i = 1 To UBound(arr)
        For j = 1 To arr(i, 3)
            s = s + 1
            d(s) = arr(i, 1) & " " & arr(i, 2)
        Next j
    Next i
    s = 0

    '直到消耗完全部的小板
    Do While d.Count
        tmp = Split(d(d.Count))
100:
        If base(0) > tmp(0) * 1 And base(1) > tmp(1) * 1 Then
            '切割
            '更新基本版当前面积
            base(0) = base(0) - tmp(0)
            '确保长大于宽
            If base(0) < base(1) Then
                j = base(0): base(0) = base(1): base(1) = j
            End If
            d.Remove d.Count
        Else
            '增加一块基本版
            s = s + 1
            base(0) = baseWidth: base(1) = baseHeight
            GoTo 100
        End If
    Loop
    MsgBox s
End Sub
求助2.rar (12.9 KB, 下载次数: 9)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-3-29 16:50 , Processed in 3.970293 second(s), 9 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表