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