开发者

Dynamic range in a formula array

开发者 https://www.devze.com 2023-01-03 18:57 出处:网络
VBA newbie over here. I\'m trying to use an array formula through excel vba but I can\'t seem to specify a dynamic range for the formula. I have:

VBA newbie over here. I'm trying to use an array formula through excel vba but I can't seem to specify a dynamic range for the formula. I have:

Range("xyz").FormulaArray = "=somefunction(Data!RC:R[8]C[4开发者_JAVA技巧9])"

But next time it could be

Range("xyz").FormulaArray = "=somefunction(Data!RC:R[15]C[32])"

This doesn't seem to work. Is there any solution to this?


If by dynamic range you mean a range whose size is determined by VBA variables (for instance jRow and kCol) then

Range("xyz").FormulArrayR1C1 = "=somefunction(Data!RC:R[" _
                    & cstr(jRow) & "]C[" & cstr(kCol) & "])"

If you are asking how to determine how many rows and columns in an area are occupied look at

Range.CurrentRegion
Range.CurrentArray
Range.End(xlUp).Row  (also xlDown, xlRight, xlLeft)


Just write your function as if you are doing it in first cell. For exmaple:

Range("A1:C150")= "=C33*D21+Countif(G100:G500,"">0"")"

You will get the same result by writing the formula =C33*D21+Countif(G100:G500,">0") in range A1 and coping it to range A1:C150


Not sure exactly what you're looking for, but maybe this will help. The code below uses the "CountA" function to check how many cells in the specified range have data in them (using A1:A10, but could be any range), and then copies that number of cells from worksheet1 to worksheet2. This will only work if the data is continuous (no blank cells in between the data).

On worksheet1, put some numbers in cells A1:A5, for instance...

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
0

精彩评论

暂无评论...
验证码 换一张
取 消