在多个集合中均等地分配值

时间:2017-05-24 15:47:37

标签: vba access-vba

背景/上下文:

我有一张包含学校列表的表格,每个学校都有一个地理区域和一些学生要联系:

school_id, region, student_count
1, West, 23
2, Central, 33
3, East, 55
4, West, 7
5, West, 18
6, Central, 45
7, Central, 15
8, West, 32
Etc.
Etc… (there are ~1500 schools)
  • 所有学校都将分配给一组支持人员,他们会向每所学校的学生发送信件。
  • 学校(按地区)和学生人数(所有学校)的分布必须尽可能平均分配。也就是说,如果有5名支持人员,按地区划分的学校和学生人数应尽可能(尽可能接近)每名员工。也就是说,每个地区的学校总数和学生人数会有所不同,即地区数量和学生数量永远不会被平分。

具体问题:

我认为解决方案需要按地区划分学校(列入名单),然后将他们的价值分配给支持人员。最终结果将写入名为staff_assignment的表:

staff_id, school_id
1, 1
1, 6
1, 3
2, 8
2, 7
2, 4
Etc.
Etc…

所以,我需要在n组中平均分配3个值列表。 3个列表的分布需要(尽可能接近)相等 对于分发的项目数量以及每个集合的总体总值。例如:

List 1 [27, 55, 34, 15, 8, 22, 17, 9, 13, 5, 25, 16, 36, 6, 17, 26, 37]
List 2 [10, 32, 46, 24, 19, 23, 14, 51, 41, 12, 18, 64, 9, 11]
List 3 [11, 49, 30, 29, 25, 20, 9, 13, 50, 12, 32, 39, 18, 12, 21, 33, 20, 15, 23, 11]

would be distributed amongst (in this case) 5 sets as:

Set 1 [L1.27, L2.24, L3.25, etc., etc.]
Set 2 [L1.55, L2.64, L3.49, etc., etc.]
Set 3 [L1.34, L2.32, L3.33, etc., etc.]
Set 4 [L1.15, L2.14, L3.15, etc., etc.]
Set 5 [L1.8, L2.9, L3.9, etc.,etc.]

我是通过MS Access表单实现的,因此解决方案将使用VBA完成(列表值和分发集数将通过表单从用户输入获得)。

我搜索了这个网站和网络并且有一些解决方案,但它们都是其他编程语言(例如,C ++,Ruby),我没有经验(我在内部&# 39;资源'谁知道就足以成为那个被要求为此类东西编写解决方案的人。所以,我只是希望在这里有一个黑带VBA大师,couyld解释如何在VBA中做同样的事情。

0 个答案:

没有答案