Динамический диапазон в массиве формул - PullRequest
0 голосов
/ 18 июня 2010

Новичок VBA здесь.Я пытаюсь использовать формулу массива через Excel VBA, но я не могу указать динамический диапазон для формулы.У меня есть:

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

Но в следующий раз это может быть

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

Это не похоже на работу.Есть ли какое-то решение для этого?

Ответы [ 3 ]

2 голосов
/ 19 июня 2010

Если под динамическим диапазоном подразумевается диапазон, размер которого определяется переменными 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)
1 голос
/ 06 декабря 2011

Просто напишите свою функцию, как будто вы делаете это в первой ячейке.Например:

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

Тот же результат вы получите, написав формулу =C33*D21+Countif(G100:G500,">0") в диапазоне A1 и скопировав ее в диапазон A1:C150

0 голосов
/ 20 июня 2010

Не уверен, что именно вы ищете, но, возможно, это поможет. Приведенный ниже код использует функцию «CountA» для проверки того, сколько ячеек в указанном диапазоне содержит данные (используя A1: A10, но может быть любым диапазоном), а затем копирует это количество ячеек с листа sheet1 на лист sheet2. Это будет работать только в том случае, если данные непрерывны (между ними нет пустых ячеек).

На листе 1 поместите несколько цифр в ячейки 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...