2017-08-11 126 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