gpt4 book ai didi

vba - Excel 查找数字组合的函数

转载 作者:行者123 更新时间:2023-12-02 10:10:27 32 4
gpt4 key购买 nike

我的电子表格上有一个数字,它是列表中许多不同数字的组合。

例如:

列表包含:100、200、250、500 和 1000
我需要解释的数字是:800

答案是 500、200、100。

我正在处理超过 1500 个货币单元格 ($xxxx.xx),这些单元格构成总计(并且并非全部都被使用,因此 SUM 毫无用处)。我需要了解哪些数字用于创建该总数(这不是公式,而是硬编码数字)。

问题:
是否有一个函数或 VBA 可以系统地组合给定范围内的数字,直到确定可以将哪些数字相加得出总数?

在开始编写暴力算法之前我想知道。

最佳答案

您可以使用SOLVER在excel中得到结果。

您可以在 ADD-INS 中激活它它应该显示在 DATA 中选项卡。

您可以这样设置电子表格:

在一栏中您有要检查的号码列表下一列全为零 (0)第三列是 First*Second (例如 100 * 0),因此一开始所有行都为零

比您添加第三列的摘要,它也应该为零。该数据的示例如下:

100 0   0
200 0 0
500 0 0
50 0 0
60 0 0
80 0 0
120 0 0
90 0 0
TOTAL 0

现在你运行solver表格data选项卡,您将获得必须提供参数的界面:

目标值是包含所有乘法之和的 CELL您正在寻找精确的值(输入 800)

通过更改单元格:选择第二列中的零范围

添加三个附加限制(add按钮):零的范围必须是 >= than 0<= 1int所以我们只有 0 和 1 作为可能的结果(每次添加其他限制时都必须重新选择范围)

现在按solve一段时间后(取决于数据集的规模,从几秒到几分钟),它会将一些零更改为 1,指示哪些数字用于生成您的结果。

如果有很多可能的结果,它会选择他找到的一个,而不指示还有更多,但再次运行可能会产生不同的结果。

这是我得到的结果:

100 1   100
200 0 0
500 1 500
50 0 0
60 0 0
80 1 80
120 1 120
90 0 0
TOTAL 800

关于vba - Excel 查找数字组合的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28146726/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com