VBA - 按小组分配插槽

时间:2018-04-19 09:09:10

标签: excel vba excel-vba

我有不同数量的广告位(如“比赛场地”)并且必须将它们分配给不同数量的组(例如,4个字段,对于2个组,因此每个组分配2个字段以进行播放)。

一开始我以为我可以通过将“比赛场地”的数量除以组数然后向下舍入来在Excel中绕过它:

= ROUNDDOWN(B6/B5;0)

但现在,如果数字不“合适”,则会有空字段。

我可以在Excel或VBA中执行此操作(但我认为VBA会更实用)。

我尝试使用Google搜索结果,但我无法弄清楚“google for go”。我猜这个问题已经被不同名称/用途的其他人解决了。

有没有人对如何处理此问题有任何指示?特别是在群体数量以及“运动场”数量不同的情况下?我想在Excel中使用VBA自动完成作业。

先谢谢

1 个答案:

答案 0 :(得分:1)

我不确切地知道您想要实现的目标,但这里有一个代码,可以帮助您分配所有字段。试试这个:

Sub AssignSlots()
    Dim groupCount As Long, fieldCount As Long, rest As Long, fieldsPerGroup As Long, i As Long

    groupCount = 6 'Range("B6").Value
    fieldCount = 10 'Range("B5").Value
    'if we don't have enought fields, exit program
    If fieldCount < groupCount Then
        MsgBox "There are less fields than groups!"
        Exit Sub
    End If
    'calculate how many fields per group (Int(...) performs rounding down)
    fieldsPerGroup = Int(fieldCount / groupCount)
    'calculate rest of fields
    rest = fieldCount - fieldsPerGroup * groupCount

    For i = 1 To rest
        'assign fieldsPerGroup + 1 fields to groups
    Next

    For i = rest + 1 To groupCount
        'assign fieldsPerGroup fields to rest of groups
    Next
End Sub

在上述程序中,组1-4将分配2个字段,组5和6将具有1个字段。