提问人:Raman 提问时间:7/2/2015 最后编辑:Raman 更新时间:7/4/2015 访问量:555
Excel VBA中的变量及其总和
Variable Variables and Sums of Them in Excel VBA
问:
为了缓解我夏天的无聊,我决定尝试制作一个 Excel 程序,根据棋盘游戏《大富翁》中拥有的房产和这些房产的房屋数量来跟踪某人的欠款(我正在试验的一些新规则)。我设置了电子表格,使每个属性都在自己的行中。我希望 Excel 程序执行此操作:
假设你正在看一个细胞。然后,对于 i=1 到 10(因为我怀疑大富翁中有 10 个以上的玩家是可行的),如果右边单元格的值是 i,那么将您实际查看的单元格的值与玩家 i 的总和相加。
我可以生成变量变量 sum1, sum2, sum3, ... , sum10 吗?然后我能说这样的话吗?
sum'i' = sum'i' + 单元格。价值
如果满足第 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
提前感谢大家!我几乎没有编程经验,非常感谢任何指导:)
答:
0赞
Pira
7/2/2015
#1
您正在寻找数组:
Dim varSum(1 To 10) As Variant
'Access it like this:
varSum(i) = xyz
更新的答案
我看到了几个可以改进的地方:
- 您作为函数的参数给出,但稍后重新分配值。更好地命名您的参数(我认为需要它)
i
iPlayer
- 您想计算特定玩家的总和吗?然后,您就不需要数组并计算所有玩家的总和。
编辑(老实说:您不需要VBA。看一看 SUMIF) - 你想计算所有玩家的总和,比如说一大笔钱?然后你必须写最后一个 For-Loop。
编辑(在这里你可以使用SUM,但我想你知道)monopolySum = sum(i)
- 您可以将所需的范围作为函数的参数,因此您不必通过函数将其设置为“硬”。试试这个
Public Function monopolySum(iPlayer As Integer, rngGame As Range) As Variant
- 您最初问题的答案是正确的吗?那么它应该被接受:)
评论
0赞
Raman
7/4/2015
谢谢@Pira!我将其设为公共函数,但由于某种原因,我无法在工作表中的单元格中调用它。
0赞
Pira
7/4/2015
嗨,@Raman,您确定您已经使用了而不是您的问题中的一样吗?(你说你有非常小的编程经验:)如果您已经使用过并且不起作用,请看这里: 无法在Excel 2010的电子表格公式中使用VBA函数(顺便说一句:我认为您必须将代码示例的第二段放入或Function
Sub
Function
Sub
Function
0赞
Raman
7/4/2015
谢谢你的提示,@Pira!我更改了代码,但我遇到了一个新问题(请参阅“更新”)。你觉得怎么样?
0赞
Pira
7/4/2015
好的,看看我的更新。对不起,我没有解决重新计算问题的方法......
0赞
Raman
7/5/2015
我像你说的那样尝试了 SUMIF,它就像一个魅力;无需 VBA。哎呀,哈哈。非常感谢您的帮助,@Pira!
评论