|
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用 · 内置多项VBA编程加强工具 ★ 免费下载 ★ ★ 使用手册★
本帖最后由 edwin11891 于 2024-6-10 18:17 编辑
这个问题,算是比较标准的规划求解问题。但有一个遗憾,就是规划求解只能得到一组满足要求的解,不能列出所有解。
下面公式,可以列举出所有组合解(前面在7楼有所阐述)。
经测试发现,数据不能超过9行,是受限于 DEC2BIN函数,最大值为512(2^9),因此,通过 DEC2HEX,分两位数字拆开后、再利用HEX2BIN的曲线救国方法,理论上最大数据量可以达到32行。
再测试,实际数据量最大只能20行,原因是受限于WPS表格最大行数1048576限制(2^20)。因此,求20个以内数据的组合,可以使用下面的公式,使用时只需修改数据源 sRC、组合值 B2 即可:
- =LET(sRc,A2:A21,n,ROWS(sRc),nMax,DEC2HEX(2^n-SEQUENCE(2^n),9),Res,--MID(RIGHT(HEX2BIN(LEFT(nMax,1),4)&HEX2BIN(MID(nMax,2,2),8)&HEX2BIN(MID(nMax,4,2),8)&HEX2BIN(MID(nMax,6,2),8)&HEX2BIN(RIGHT(nMax,2),8),n),TOROW(SEQUENCE(n)),1),sBox,MMULT(Res,sRc),sSel,FILTER(Res,sBox=B2),sCom,BYROW(sSel,LAMBDA(x,TEXTJOIN(",",1,IF(x=1,TRANSPOSE(sRc),"")))),Rst,IFERROR(sCom,"无匹配"),Rst)
复制代码
如果数据超过20,还是使用规划求解比较快捷,求解时设置组合数量为一个较大的值,计算效率比较高,否则求解过程导致电脑会跟死机一样。
|
评分
-
1
查看全部评分
-
|