发布网友 发布时间:2024-10-24 17:18
共1个回答
热心网友 时间:2024-11-01 09:25
假定数据a存放于A2:A21间,数据B存放于B2:B21间,要凑出的数存放于C2格中,挑出的数据存放于E:J之间。如图:
新建一个宏,名叫“凑数”,内容如下:
Sub 凑数()
Range("E2:J999999").Select '清除数据
Selection.ClearContents
m = 2
For x1 = 2 To 17 'a1的值
a1 = Cells(x1, 1).Value
If a1 < Cells(2, 3).Value Then
For x2 = x1 + 1 To 18 'a2的值
a2 = Cells(x2, 1).Value
If a1 + a2 < Cells(2, 3).Value Then
For x3 = x2 + 1 To 19 'a3的值
a3 = Cells(x3, 1).Value
If a1 + a2 + a3 < Cells(2, 3).Value Then
For x4 = x3 + 1 To 20 'a3的值
a4 = Cells(x4, 1).Value
If a1 + a2 + a3 + a4 < Cells(2, 3).Value Then
For x5 = x4 + 1 To 21 'a3的值
a5 = Cells(x5, 1).Value
If a1 + a2 + a3 + a4 + a5 < Cells(2, 3).Value Then
For y = 2 To 21 'b的值
b = Cells(y, 2).Value
If a1 + a2 + a3 + a4 + a5 + b = Cells(2, 3).Value Then
Cells(m, 5).Value = a1
Cells(m, 6).Value = a2
Cells(m, 7).Value = a3
Cells(m, 8).Value = a4
Cells(m, 9).Value = a5
Cells(m, 10).Value = b
m = m + 1
End If
Next
End If
Next
End If
Next
End If
Next
End If
Next
End If
Next
End Sub
运行之,会根据你指的数据穷举所有可能,存放在E:J之间。如: