从另一张表中的值生成表决计数表

我目前有一张工作表,允许最终用户从一组地区中进行select,并有分区和他们的投票权。 例如

区= 5

考生= 3

街道

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

我想创build一个button,让最终用户创build一个额外的工作表,将基于他们的区域select中的值填充。 新创build的工作表将创build一个“选票”的种类。 在第一张纸上,他们表示了候选人的数量,新的纸张会填充类似于这个

  UERTBS 

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

最终用户将input原始投票(0到4之间的一个数字),这将被乘以表1中的投票强度,生成一个加权的计算器,根据某个分区的分区数量,可以放大或缩小。

逻辑基本上是:

  • 创build一个新工作表
  • 为工作表1中的每个子区域横向添加列标题,并为工作表1中的候选人总数添加行
  • 在input原始投票时,会生成表2中创build的表中的镜像表,并以原始投票计算出来

更新循环显示公式,而不是:

 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 

所以感谢@ VBA Pete让我走上正轨,我设法创造了基本的function。 我现在被困在这一步

在input原始投票时,会生成表2中创build的表中的镜像表,并以原始投票计算出来

我需要再做一件事

1.在For循环中为列范围创build一个数据validation要求,该范围不允许比实际存在的人更多的原始投票。 我把这个存储在下面的代码中作为MembersPresent的variables。
2.在logging最终用户input之后填入加权投票。 这可以通过使用variables在For循环内的单元格中插入dynamic公式来实现。 我已经从下面的非工作代码中分离出工作代码

 Private Sub CommandButton1_Click() ActiveWorkbook.Sheets.Add Before:=Worksheets(Worksheets.Count) i = Sheet1.Cells(8, 6).Value CandidateCount = Sheet1.Cells(11, 8).Value CandidateState = CandidateCount + 1 SheetName = Sheet1.Cells(13, 8).Value OrSheetName = Sheet1.Cells(13, 8).Value v = 0 For Each Sheet In Worksheets If SheetName = Sheet.Name Then SheetName = OrSheetName & "_Ballot" & v v = v + 1 End If Next Sheet ActiveSheet.Name = SheetName For x = 1 To i b = 15 + x Subdistrict = Cells(b, 2).Value MembersPresent = Cells(b, 6).Value ActiveSheet.Cells(1, (x + 1)).Value = Subdistrict For a = 2 To 6 ActiveSheet.Cells(a, x + 1).Value = 0 With ActiveSheet.Range(ActiveSheet.Cells(a, x + 1), ActiveSheet.Cells(a, x + 1)).Validation .Add Type:=xlValidateWholeNumber, _ AlertStyle:=xlValidAlertStop, _ Operator:=xlBetween, Formula1:="0", Formula2:=MembersPresent .InputTitle = "Integers" .ErrorTitle = "Integers" .InputMessage = "Enter an integer from 0 to " & MembersPresent .ErrorMessage = "You must enter a number no less than 0 and no greater than the number of members in attendance: " & MembersPresent End With Next a Next x For b = 1 To CandidateCount Named = "Candidate Name" & " " & b ActiveSheet.Cells((b + 1), 1).Value = Named Next b ActiveSheet.Cells(CandidateCount + 1, 1).Value = "Raw Vote Totals" 

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

  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