excel 在VBA中循环选择不同的数据集,直到总和为X

ykejflvf  于 2023-01-10  发布在  其他
关注(0)|答案(1)|浏览(126)

我在Excel中有一系列随机值的数据(280,000行),每一行代表一家超市分支的消费总额。
我需要从这280,000行中选择总计1,500,000美元的机票。
我想首先通过在Solver上使用二进制文件来最小化错误,但是变量限制太低了。
我想尝试使用do while / do until。我该如何组织它呢?

zbdgwd5y

zbdgwd5y1#

创建一个名为TicketsCollection,创建一个名为Total的变量来保存总和,然后向下循环工作表,将票据添加到总数中,并将行保存在集合中,直到达到1,500,000。

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

在这个While循环结束时,Tickets集合中将包含所有范围,其值之和至少为1,500,000。

相关问题