求不同行不同列最小求和
分类:Excel
原始数据和要求如下:
序号 | 名称 | ||||
A | B | C | D | 合计 | |
1 | 4011289.77 | 4347456.895 | 4044374.1 | 2860262 | 15263382.77 |
2 | 3957312.838 | 4588539.898 | 4283108.81 | 3055686.493 | 15884648.04 |
3 | 4084310.099 | 4513584.707 | 4214384.384 | 2987688.844 | 15799968.03 |
4 | 3918395.126 | 4336275.113 | 4035017.516 | 2867992.45 | 15157680.21 |
本质上就是找不同行不同列的四个数,使得合计最小。如果用vba就是不断的循环,计算出所有不同行不同列的4个数值组合的合计,然后比较大小。这个问题其实可以很方便的用规划求解搞定:
先加一行辅助,初始化为1,2,3,4,表示每列取第几个数值。并根据这个初始化的结果,把取出来的数值求和(F10),保留公式,因为我们要变化这四个初始值。
规划求解的设置如下:
四个值取值为1-4之间的整数,并且不重复,运行求解就可以得到如下结果了。