首先,我是初學者,所以如果有任何不清楚的地方,我會提前道歉。所以基本上我有一個 excel 作業簿,它從 4 個其他作業簿的表中收集值(基本上是總和)(所有作業簿都存在于同一個檔案中,并以 1 到 4 為例),目前我正在使用宏來收集和求和這些值(示例如下所示)。
Range("D4").Select
ActiveCell.FormulaR1C1 = "=[1.xlsm]Sheet1!R4C3 RC [2.xlsm]Sheet1!R4C3 RC [3.xlsm]Sheet1!R4C3 RC [4.xlsm]Sheet1!R4C3 RC"
Range("D5").Select
ActiveCell.FormulaR1C1 = "=[1.xlsm]Sheet1!R5C3 RC [2.xlsm]Sheet1!R5C3 RC [3.xlsm]Sheet1!R5C3 RC [4.xlsm]Sheet1!R5C3 RC"
Range("D6").Select
ActiveCell.FormulaR1C1 = "=[1.xlsm]Sheet1!R6C3 RC [2.xlsm]Sheet1!R6C3 RC [3.xlsm]Sheet1!R6C3 RC [4.xlsm]Sheet1!R6C3 RC"
正如您所看到的,當前的方法有點混亂。我想知道是否有一種更簡單的方法可以使其作業而無需手動提及所有作業簿的名稱(例如在同一路徑中創建一個包含所有 xlsm 檔案的陣列)
提前謝謝你,希望我沒有混淆:)
uj5u.com熱心網友回復:
試試這個代碼:
Sub Test()
Dim MyArr() As String, CurRow As Long, i As Integer, SubFormula As String, TotFormula As String, OutSheet As Worksheet
Set OutSheet = ActiveSheet
MyArr = Split("1.Xlsm,2.Xlsm,3.Xlsm,4.Xlsm", ",")
For CurRow = 4 To 6
For i = LBound(MyArr) To UBound(MyArr)
SubFormula = "[" MyArr(i) "]Sheet1!R" Trim(Str(CurRow)) "C3 RC"
If i = LBound(MyArr) Then TotFormula = "=" SubFormula Else TotFormula = TotFormula " " SubFormula
Next i
OutSheet.Cells(CurRow, 4).FormulaR1C1 = TotFormula
Next CurRow
End Sub
有很多方法可以解決這樣的問題,根據情況肯定也有更好的方法,但它應該向您展示如何解決這個問題。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/330830.html
上一篇:ExcelVba陣列不重新填充
下一篇:這是升級標準庫鎖的有效方法嗎?
