Как заполнить диапазон в листе Excel формулой массива, используя VBA? - PullRequest
1 голос
/ 19 июня 2009

На самом деле входной диапазон больше, чем фактический диапазон, необходимый для формулы массива. Поэтому было бы неплохо, если бы ответ содержал также код для изменения размера диапазона перед заполнением формулой массива.

Ответы [ 2 ]

1 голос
/ 19 июня 2009

Мне кажется, это работает

Call rng.Clear
Dim rngState As Range
Set rngState = rng.Resize(nRowCount, nColumnCount)
rngState.FormulaArray = "whatever_array_formula"
rngState.Calculate
0 голосов
/ 09 октября 2012

То, что я искал, но только моя более полная версия, учитывая, что массив уже заполнен:

Sub PasteArray(vTheArray As Variant)
Dim rPasteHere As Range

With ActiveWorkbook
    Set rPasteHere = .Sheets("PayRoll").Range("A1").CurrentRegion  'Assign the region to use
    With rPasteHere
        .Clear  'Wipe the current region clean
        Set rPasteHere = .Resize(UBound(vTheArray, 1) + 1, UBound(vTheArray, 2) + 1)  'Resize the region to your input
        .FormulaArray = vTheArray  'Dump the array into the resized region
    End With
End With
Set rPasteHere = Nothing  'Clean up!
End Sub

Помните, что массивы начинаются с нуля, поэтому +1 в функции .Resize. Для моего приложения я жестко закодировал название листа и диапазон, поэтому, естественно, rPasteHere зависит от человека.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...