发布网友 发布时间:2024-04-02 04:25
共3个回答
热心网友 时间:2024-04-25 08:49
一、分析:此题目就是在25个数据中挑出任意个数字,使其之各为18000(如果存在)
二、求解思路:利用 sumproduct 函数将这25个数据组成的数组与 另外一个由“1”和“0”组成的25维行数组相乘求和。找到这样的一个行数组,使其值为18000
三、详解步骤:
1. 在B1:Z1单元格中输入25个数据;
2. 在A4单元格中输入:“=SUMPRODUCT(B1:Z1,B4:Z4)”;
3.A2为从0~2^25的变量,A3为其二进制表现形式,用于下面生成25维数组;
4.在A3中输入:
“=REPT("0",25-LEN(DEC2BIN(INT(A2/512))&TEXT(DEC2BIN(MOD(A@,512),9),"000000000")))&(DEC2BIN(INT(A2/512))&TEXT(DEC2BIN(MOD(A2,512),9),"000000000"))”
4.B4~Z4是将A3中的数据分列到各单元格,输入:“=VALUE(MID($A$3,COLUMN()-COLUMN($A$3),1))"
接下来,就是让A2进行变量取值,当A4为18000的时候停止;
编了一个宏,如下所示:
Sub LOOKUP()
For i = 1 To 2 ^ 25
Cells(2, 1).Value = i
If Cells(4, 1).Value = 18000 Then
Exit For
End If
Next i
End Sub
5.运行宏,便能得到如上图所示的一个25维数组。
四、小结:
1. 方法显得麻烦了,与上楼得到的结果一致,想请问规划求解如何来解这个问题?
2. 提供了一种在数组中选值求和的方法,不知是否有更好的改进的地方,还请高手赐教!
3. 希望对楼主有所帮助,我们可以进一步探讨……
热心网友 时间:2024-04-25 08:48
规划求解可以帮你忙热心网友 时间:2024-04-25 08:48
假设图中列为A列, 起始为第一行,共100行,