Excel VBA 中的可变变量及其总和

Variable Variables and Sums of Them in Excel VBA

为了缓解暑假的无聊,我决定尝试制作一个 Excel 程序,根据棋盘游戏《大富翁》中拥有的财产和这些财产上的房屋数量,跟踪某人欠多少钱(我正在试验一些新规则)。我设置了电子表格,使每个 属性 都在自己的行中。我希望 Excel 程序执行此操作:

假设您正在查看一个单元格。然后,对于 i=1 到 10(因为我怀疑 10 个以上的玩家在大富翁中是否可行),如果右边的单元格的值为 i,则将您实际查看的单元格的值相加并求和对于玩家 i.

我可以生成变量变量 sum1、sum2、sum3、...、sum10 吗?然后我可以说

总和'i' = 总和'i' + cell.Value

如果满足第 2 段中的条件,则在 for 循环中?

更新:我试过这段代码,它可以用来获取玩家 1 的总和。然而,它为所有玩家提供了玩家 1 的总和,并且每当有人购买新的 属性 或升级当前的 属性 时更新是很麻烦的(我需要在每次更新时重新输入公式)。

Public Function monopolySum(i As Integer) As Variant

   Dim sum(1 To 10) As Variant, rng As Range, cell As Range

    For i = 1 To 10
        sum(i) = 0
    Next i

    Set rng = Range("C2:C29")

    For Each cell In rng
        For i = 1 To 10
            If cell.Offset(0, 1).Value = i Then
                sum(i) = sum(i) + cell.Value
            End If
        Next i
    Next cell

    For i = 1 To 10
        monopolySum = sum
    Next i

End Function

提前谢谢大家!我的编程经验很少,非常感谢任何指导:)

您正在寻找数组:

Dim varSum(1 To 10) As Variant
'Access it like this:
varSum(i) = xyz

更新答案
我看到几个可以改进的地方:

  1. 您将 i 作为函数的参数,但稍后会重新分配值。更好地命名您的参数 iPlayer(我认为需要它)
  2. 您想计算​​特定玩家的总和吗?然后你不需要数组并计算所有玩家的总和。
    编辑(老实说:你不需要 VBA。看看 SUMIF
  3. 你想计算所有玩家的总和,比如说一个大总和?然后你必须在最后一个For-Loop中写monopolySum = sum(i)
    编辑(在这里你可以使用 SUM,但我想你知道)
  4. 您可以将所需范围作为函数的参数,因此您不必通过函数设置它 "hard"。试试这个 Public Function monopolySum(iPlayer As Integer, rngGame As Range) As Variant
  5. 您最初问题的答案是否正确?那么它应该被接受:)