2017-08-11 131 views
0

假设我有Excel文件包含四个工作表,我们将它们命名为1,2,3和4.我想评估单元格AK10中所有值的总和,AK25,AK40等,直到AK160工作表上的4,然后将其放置在工作表2使用内置Excel函数查看我的简单VBA脚本

这里的小区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个错误。我究竟做错了什么?

+0

你得到什么错误?你的预期产出是多少? – jmoon

+3

嗯...没有具体的问题,但一个快速谷歌的* Excel 400错误*变成了一大堆点击提供解决方案。花了我大约2秒,除了你写的东西以外绝对没有别的东西*它最终以400错误*结束。只是一个建议。你也可以学习阅读你写的代码;你期望在字符串中嵌入一个变量会做什么?当'i'在报价单内时,你期望Excel能做成''AK(10 + 15 * i)'? –

+0

@jmoon,我更新我的问题。它失败,错误400.期望的输出是AK(10 + 15 * i)格式的所有值的总和,其中我从0到10,因此它是= 4!AK10 + 4!AK25 + ... +4!AK145 + 4!AK160。 – Hasek

回答

2
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 
1

我会在这坐裂缝 - 我真的用了很多命名范围来传递数据来回...:

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 
0

你没有说的总和是在worksheet2 G23使用VBA

把这个完成(实际上,把这个任意单元格)

=SUM('4'!AK10,'4'!AK25,'4'!AK40,'4'!AK55,'4'!AK70,'4'!AK85,'4'!AK100,'4'!AK115,'4'!AK130,'4'!AK145,'4'!AK160) 

至于什么你与你的代码,已经部分得到回答@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