在EXCEL中有如下資料
5 6 7 8 我需要將它從第一格開始每三格相加
1 0 5 2 並紀錄下來 也就是第一個得到的值是
1 2 6 1 5+1+1 第二個是1+1+6 第三個是1+6+0
以此類推 應該怎麼寫呢?
希望能獲得解答 感謝!
2006-07-14 07:42:04 · 3 個解答 · 發問者 楊阿翔 1 in 電腦與網際網路 ➔ 程式設計
針對Roby大所提供的解答 多做些說明
由於我的資料很龐大 以上只是稍微舉個例
據我了解 VBA的陣列 需要一個一個給予他數值
譬如說A(1)= ? A(2)=? 也由於資料過於龐大
所以無法將資料轉為單一列或一行 試過用for迴圈
與activecell.offset(1,0)移動工作格的方法
但問題為 資料到cells(3,1)的時候 下一格沒辦法讓程式
判斷為cells(1,3)以致於無法計算
p.s 講的很像還是很不清楚 還是感謝Roby大的解答!
2006-07-14 09:15:25 · update #1
Private Sub CommandButton1_Click() Dim S$(), R%, C%, L% R = 3 '行數 C = 4 '列數 L = 3 '欲相加之格數 S = Cal(R, C, L) MsgBox Join(S, vbCrLf)End SubFunction Cal(nR As Integer, nC As Integer, nL As Integer) As VariantDim I%, J%, R%, C%, N%, X%, Y%, K$, S$() R = 1: C = 1 For X = 0 To nR * nC - nL I = R: J = C: N = 0: K = "" For Y = 1 To nL N = N + Cells(I, J) K = K & Cells(I, J) & "+" I = I + 1 If I > nR Then I = 1: J = J + 1 Next ReDim Preserve S(X): S(X) = Left$(K, Len(K) - 1) & "=" & N R = R + 1 If R > nR Then: R = 1: C = C + 1 Next Cal = SEnd Function
2006-07-14 10:48:22 · answer #1 · answered by W.J.S. 7 · 0⤊ 0⤋
DEAR W.J.S您好,我近日有一個VBA問題
http://tw.knowledge.yahoo.com/question/?qid=1406081301589
謝謝您
2006-08-12 21:59:19 · answer #2 · answered by ? 7 · 0⤊ 0⤋
我不確定你資料是不是一定要長成這種方形的,如果是,我認為第一個步驟是要將資料轉換成長型的﹙一列或一行﹚,例如將資料依序改填入到 A1,A2,A3...,接下來假設你結果要放到 B1,B2,B3...就可以在B1填入 =SUM(A1:A3),然後在B1的左下角往下拉,將運算複製下去就可以了。如果考慮VBA,那更簡單了,看有幾筆資料,就開個多大的陣列﹙以上圖為例,有12筆資料,就開個大小為12的陣列﹚,之後把資料存到陣列,然後就用一個For Loop,讓結果等於三個數值相加就可以了。
2006-07-14 08:34:06 · answer #3 · answered by Rody 5 · 0⤊ 0⤋