查看带有内置Excel函数的简单VBA脚本

查看带有内置Excel函数的简单VBA脚本,vba,excel,Vba,Excel,假设Excel文件由四个工作表组成,将它们命名为1、2、3和4。我想计算从单元格AK10、AK25、AK40等到工作表4上AK160的所有值的总和,然后将其放入工作表2的单元格G23中 这是我分配给工作表2的宏: Sub sum_up() Dim i As Integer, s As Integer s = 0 For i = 0 To 10 s = WorksheetFunction.Sum(s, Worksheets("4").Range("AK(10 + 15 * i)")) Next i

假设Excel文件由四个工作表组成,将它们命名为1、2、3和4。我想计算从单元格AK10、AK25、AK40等到工作表4上AK160的所有值的总和,然后将其放入工作表2的单元格G23中

这是我分配给工作表2的宏:

Sub sum_up()
Dim i As Integer, s As Integer
s = 0
For i = 0 To 10
s = WorksheetFunction.Sum(s, Worksheets("4").Range("AK(10 + 15 * i)"))
Next i
Range("G23").Value = "s"
End Sub

结果是400个错误。我做错了什么?

我要试一下——我真的会使用更多的命名范围来来回传递数据…:

Sub sum_up()

    Dim i As Long, s As Long
    s = 0
    For i = 0 To 10
        s = s + Worksheets("4").Cells(10 + 15 * i, "AK").Value
    Next i
    Range("G23").Value = s

End Sub
Sub sum_up()
    Dim i As Integer, s As Integer
    s = 0
    For i = 0 To 10
    s = s + Worksheets("4").Range("AK" & (10 + 15 * i))
    Next I

    Range("G23").Value = s

End Sub

我将尝试一下这个-我真的会使用更多的命名范围来来回传递数据…:

Sub sum_up()
    Dim i As Integer, s As Integer
    s = 0
    For i = 0 To 10
    s = s + Worksheets("4").Range("AK" & (10 + 15 * i))
    Next I

    Range("G23").Value = s

End Sub

您没有说要使用VBA进行求和

将其放在工作表2的G23中(实际上,将其放在任何单元格中)

至于你在代码上犯了什么错误,@KenWhite已经部分回答了这个问题

您还将字母“s”放入代码运行时恰好可见的任何工作表的G23中

在第2页中加入参考,与上面两行引用第4页相同

此代码应适用于:

Sub sum_up()

    Dim ws4 As Worksheet
    Set ws4 = ActiveWorkbook.Sheets("4")

    Dim rng As Range
    Set rng = ws4.Range("ak10")          ' point to "ak10"

    Dim total As Long
    total = rng.Value

    Do While True
        rng.Select
        Set rng = rng.Offset(15)         ' move pointer down 15 rows

        If rng.Row > 160 Then Exit Do    ' moved past row 160 ?

        total = total + rng.Value

    Loop

    ActiveWorkbook.Sheets("2").Range("G23").Value = total

End Sub

您没有说要使用VBA进行求和

将其放在工作表2的G23中(实际上,将其放在任何单元格中)

至于你在代码上犯了什么错误,@KenWhite已经部分回答了这个问题

您还将字母“s”放入代码运行时恰好可见的任何工作表的G23中

在第2页中加入参考,与上面两行引用第4页相同

此代码应适用于:

Sub sum_up()

    Dim ws4 As Worksheet
    Set ws4 = ActiveWorkbook.Sheets("4")

    Dim rng As Range
    Set rng = ws4.Range("ak10")          ' point to "ak10"

    Dim total As Long
    total = rng.Value

    Do While True
        rng.Select
        Set rng = rng.Offset(15)         ' move pointer down 15 rows

        If rng.Row > 160 Then Exit Do    ' moved past row 160 ?

        total = total + rng.Value

    Loop

    ActiveWorkbook.Sheets("2").Range("G23").Value = total

End Sub

你犯了什么错误?你的预期产量是多少?嗯。。。没有具体的问题,但是一个Excel 400错误的快速谷歌搜索会发现一大堆提供解决方案的点击。我花了大约2秒钟的时间,完全不知道你用它写了什么,结果出现了400个错误。只是一个建议。您还可以学习阅读您编写的代码;您希望在字符串中嵌入变量会做什么?当
i
在引号内时,您希望Excel如何处理
“AK(10+15*i)”
。它失败,错误为400。预期输出是AK(10+15*i)形式的单元格中所有值的总和,其中i从0到10,因此它等于4!AK10+4!AK25+…+4!AK145+4!AK160.
.Range(“AK”和(10+10*i)
要进行任何计算,请将其从引号中取出。在引号中,它们被读取为字符串,而不进行任何计算。您是否希望从所问的单元格中读取编码的范围?您得到了什么错误?您的预期输出是什么?嗯……没有具体问题,但快速搜索Excel 400错误会发现一大堆点击提供解决方案。花了我大约2秒钟的时间,我完全不知道你用它写了什么,结果导致了400个错误。只是一个建议。你还可以学习阅读你写的代码;你希望在字符串中嵌入变量会做什么?你希望Excel如何处理
“AK(10+15*i)”
i
在引号内时?@jmoon,我更新我的问题。它失败,出现错误400。预期的输出是AK(10+15*i)形式的单元格中所有值的总和,其中我从0到10,因此它是=4!AK10+4!AK25+…+4!AK145+4!AK160。
范围(“AK”&(10+10*i)
若要进行任何计算,请将其从引号中取出。在引号中,它们被读取为字符串,不进行任何计算。是否要从所述单元格中读取编码范围?