从另一张纸中的值生成投票计数表

时间:2017-01-24 22:24:07

标签: excel vba excel-vba

我目前有一个工作表,允许最终用户从一组区域中进行选择,并在子区域中填充其投票强度。例如

区= 5

候选人= 3

街道

Subdistrict     Vote Strength
   U                  456
   E                  442
   R                  876
   T                  312
   B                  256
   S                  643

我想创建一个按钮,让最终用户创建一个额外的工作表,根据他们的地区选择中的值进行填充。新创建的工作表将创建各种“选票”。在第一张纸上,他们表示了候选人的数量,而新表将填充与此相似的

           U    E   R   T   B   S

候选人1 候选人2
候选人3

最终用户将输入原始投票(0到4之间的数字),这将与表1中的投票强度相乘,产生一个加权投票计算器,可根据某个地区的分区数量。

逻辑基本上是:

  • 制作新表
  • 为工作表1中的每个子区域水平添加列标题,并为工作表1中的候选项总数添加行
  • 当输入原始投票时,将根据计算的原始投票生成表2中创建的表格中的镜像表

2 个答案:

答案 0 :(得分:1)

更新了循环以显示公式:

For m = 2 To i + 2

    Cells(CandidateCount + 1, m).Formula = _
    "=SUM(" & ActiveSheet.Range(ActiveSheet.Cells(2, m), ActiveSheet.Cells(CandidateStart, m)).Address(False, False) & ")"

Next m

答案 1 :(得分:0)

感谢@ falsey让我走上正轨,我设法创建了基本功能。我现在坚持这一步

  

在输入原始投票时,将使用计算的原始投票生成表2中创建的表中的镜像表

我需要再完成两件事

1。在For循环中为列范围创建数据验证要求,该列范围不允许计算比实际存在的人更多的原始投票。我把它存储在下面代码中的变量中作为MembersPresent。
 2.在记录最终用户输入后填充加权投票这可以通过使用变量将动态公式插入到For循环内的单元格中来实现。我已从下面的非工作代码中分离出工作代码

    For m = 2 To i + 2
            SumRange = ActiveSheet.Range(ActiveSheet.Cells(2, m), ActiveSheet.Cells(CandidateStart, m)).Select
            ActiveSheet.Cells(CandidateCount + 1, m).Formula = "=SUM(" & SumRange & ")"
        Next m

破碎的代码看起来像我想要的那样

{{1}}