彭老师您好! 看了您的“数据组合求和”的代码我觉得非常实用:1 代码精简,运行速度快;2 组合结果分单元格放置于本工作表,用起来非常方便;3 组合结果的输出量可以根据需要调整,解决了许多无用的数据占用了大量空间的问题。总之我觉得非常好用!! 在使用过程中又遇到了两个新问题,特向您请教,请您给以解决。 情况是这样:在B列有M个数字,要求从中选出N个进行组合求和。我遇到的问题是:在您的代码中M和N都不能变化(M为18,N为9)。我的 要求是:1、M和N都为变量,即能够增加或减少,2 、N能够从某一个单元格(如C1)取值.这样使用起来更加方便快捷。想请您将原来的代码修改一下,能够满足我的要求。原来的代码如下: Sub peng() arr = Cells(3, 2).Resize(18, 1) ReDim arr3(1 To 65536, 1 To 9) As Long ReDim arr2(1 To 10) As Long Call xi(i, j, arr, arr2, arr3, 0, 4190, 4150) Range(Cells(3, 9), Cells(65536, 17)) = arr3 End Sub Sub xi(j, x, arr, arr2, arr3, jj, mx, mi) If jj > 60000 Then Exit Sub If j = 10 Then Exit Sub If j > 1 And x > mi And x < mx Then jj = jj + 1 For i = 1 To j arr3(jj, i) = arr2(i) Next i Exit Sub End If For i = 1 To 18 If x + arr(i, 1) < mx Then arr2(j + 1) = arr(i, 1) xi j + 1, x + arr(i, 1), arr, arr2, arr3, jj, mx, mi End If Next i End Sub 谢谢您了!! |