VBA中调用SUM函数求和,但是单元格地址不是常量是变量,如何引用

2024-12-14 02:53:32
推荐回答(5个)
回答1:

1、示例代码:

Sub test1()
    Dim x As Long
    x = WorksheetFunction.SumIf(Range("A2:A9"), Range("C2").Value, Range("B2:B9"))
    Range("D2").Value = x
End Sub

2、如下图:

3、以上代码的作用是:调用工作表函数SUMIF,求A2:A9范围内符合C2单元格条件,对应的B2:B9范围内数值之和,结果输出到D2单元格。

回答2:

sub macro1() for i=n to n+17 'n要换成实际的行号 for j=1 to m '从第一列开始,到第m列;m要换成实际的数字 cells(i,j).value=cells(i+25,j).value+cells(i+29,j).value next j next i end sub 其实不一定要用VBA,可以直接用公式完成 假设是第2到第19行的1到100列,首先在A2单元格输入公式:=A27+A31,然后往下填充到A19,再选择A2:A19,往右填充到第100列即可。 这样如果下面的数据发生了变化,求和的结果可以立刻随之改变;而VBA的必须重新运行宏才可以改变计算的结果。

回答3:

使用工作表函数SUM,需要将单元格对象作为参数传递,而不是文本:
With Sheet1
.Cells(n,6).value = WorksheetFunction.Sum(.Range(.Cells(n,4), .Cells(k,4)))
End With

回答4:

sum函数里不能加双引号,双引号表示里面的是文本,不是变量。

我用的代码如下:

b1 = Cells(28, 23).Address
b2 = Cells(28, 23 + yue).Address
b3 = b1 & ":" & b2
b = Application.WorksheetFunction.Sum(Range(b3))

回答5:

如果C9到C18是相同的,C19和C18不同,则。。。

这句话本身存在矛盾,建议把源文件发给我,帮你看看。
240164005@qq.com