VBA新手在這裏。我試圖通過excel vba使用數組公式,但似乎無法爲公式指定動態範圍。我有:公式數組中的動態範圍
Range("xyz").FormulaArray = "=somefunction(Data!RC:R[8]C[49])"
但下一次也可能是
Range("xyz").FormulaArray = "=somefunction(Data!RC:R[15]C[32])"
這似乎並沒有工作。有沒有解決這個問題的方法?
VBA新手在這裏。我試圖通過excel vba使用數組公式,但似乎無法爲公式指定動態範圍。我有:公式數組中的動態範圍
Range("xyz").FormulaArray = "=somefunction(Data!RC:R[8]C[49])"
但下一次也可能是
Range("xyz").FormulaArray = "=somefunction(Data!RC:R[15]C[32])"
這似乎並沒有工作。有沒有解決這個問題的方法?
如果通過動態範圍你的意思是一個範圍,其大小由VBA變量來確定(例如jRow和KCOL)然後
Range("xyz").FormulArrayR1C1 = "=somefunction(Data!RC:R[" _
& cstr(jRow) & "]C[" & cstr(kCol) & "])"
如果你問如何確定有多少行和列的面積佔用看看
Range.CurrentRegion
Range.CurrentArray
Range.End(xlUp).Row (also xlDown, xlRight, xlLeft)
不確定你到底在找什麼,但也許這會有所幫助。下面的代碼使用「CountA」函數來檢查指定範圍內有多少個單元格中有數據(使用A1:A10,但可以是任何範圍),然後將該數量的單元格從工作表1複製到工作表2。這隻有在數據連續時纔有效(數據之間沒有空白單元格)。
在worksheet1,把一些數字在單元格A1:A5,比如...
Sub DynamicRange()
Dim CountA_Range As Range, intCountA_Result As Integer, CopyRange As Range
Set CountA_Range = Worksheets(1).Range("A1:A10")
intCountA_Result = WorksheetFunction.CountA(CountA_Range)
Set CopyRange = ThisWorkbook.Worksheets(1).Rows("1:" & intCountA_Result)
CopyRange.Copy
Worksheets(2).Rows("1").PasteSpecial (xlPasteValues)
End Sub
只寫你的功能,如果你在第一個單元格做。對於〔實施例:
Range("A1:C150")= "=C33*D21+Countif(G100:G500,"">0"")"
您將在範圍A1
寫公式=C33*D21+Countif(G100:G500,">0")
和應對它得到相同的結果範圍A1:C150