我在Excel中有一系列随机值的数据(280,000行),每一行代表一家超市分支的消费总额。 我需要从这280,000行中选择总计1,500,000美元的机票。 我想首先通过在Solver上使用二进制文件来最小化错误,但是变量限制太低了。 我想尝试使用do while / do until。我该如何组织它呢?
Sub Example()
Const STARTING_ROW As Long = 2 'Change this
Const VALUE_COLUMN As Long = 5 'Change this
Dim DataSheet As Worksheet
Set DataSheet = ActiveSheet 'Change this
Dim CurrentRow As Range
Set CurrentRow = DataSheet.Rows(STARTING_ROW)
Dim Tickets As New Collection, Total As Double
While Total < 1500000
Tickets.Add CurrentRow
With CurrentRow.Columns(VALUE_COLUMN)
If IsNumeric(.Value) Then Total = Total + .Value
End With
'Exit condition - End of Sheet
If CurrentRow.Row = CurrentRow.Parent.Rows.Count Then
Exit Sub
Else
Set CurrentRow = CurrentRow.Offset(1)
End If
Wend
End Sub
1条答案
按热度按时间zbdgwd5y1#
创建一个名为
Tickets
的Collection,创建一个名为Total
的变量来保存总和,然后向下循环工作表,将票据添加到总数中,并将行保存在集合中,直到达到1,500,000。在这个While循环结束时,
Tickets
集合中将包含所有范围,其值之和至少为1,500,000。