Excel FormulaR1C1和FormulaArray

时间:2016-04-14 10:19:32

标签: arrays excel dynamic range formula

我在Excel中设置了以下表格。我希望用我在B列中成功试过的数组公式填充表格的其余部分。

enter image description here

下面的代码自动填充表格,但没有使用数组公式,仅使用公式,因此它不会返回所需的结果。如何更改它以便传播数组公式?

请注意用户数量&课程确实发生变化,因此范围的动态计算是固定的要求。

Dim LastCol As Long, LastRow As Long
LastCol = Cells(2, Columns.Count).End(xlToLeft).Column
LastRow = Cells(Rows.Count, "B").End(xlUp).Row
Range("B3", Cells(LastRow, LastCol)).FormulaR1C1 Range("B3").FormulaR1C1

3 个答案:

答案 0 :(得分:0)

编辑,因为它没有按预期工作。 我还会使用另外两种方法。 首先,最明显的是范围.AutoFill方法:

Dim LastCol As Long, LastRow As Long
LastCol = Cells(2, Columns.Count).End(xlToLeft).Column
LastRow = Cells(Rows.Count, "B").End(xlUp).Row
Range("B3").AutoFill Destination:=Range("B3", Cells(3, LastCol)), Type:=xlFillDefault
Range("B3", Cells(3, LastCol)).AutoFill Destination:=Range("B3", Cells(LastRow, LastCol)), Type:=xlFillDefault

哪种方法可以正常使用,您可以轻松控制公式的外观 另一个选择是迭代你范围内的所有单元格,只需复制公式,虽然它只是按原样复制公式,所有引用原始查找单元格,我怀疑它是什么,你正在寻找什么,但在这里它仍然是:

Dim LastCol As Long, LastRow As Long
LastCol = Cells(2, Columns.Count).End(xlToLeft).Column
LastRow = Cells(Rows.Count, "B").End(xlUp).Row
For i = 3 To LastRow
    For j = 2 To LastCol
        Cells(i, j).FormulaArray = Cells(3, 2).FormulaArray
    Next j
Next i

答案 1 :(得分:0)

对我有用的答案: -

Range("B3").Copy

Dim LastCol As Long, LastRow As Long
LastCol = Cells(2, Columns.Count).End(xlToLeft).Column
LastRow = Cells(Rows.Count, "B").End(xlUp).Row
'Range ("C3:F12")
Range("C3", Cells(LastRow, LastCol)).Select

Selection.PasteSpecial xlPasteFormulas
Application.CutCopyMode = False

答案 2 :(得分:0)

我用它来使它工作.........

CREATE USER wordpressuser@localhost IDENTIFIED BY ‘password’;