Filldown使我的公式消失Excel VBA

时间:2018-01-25 03:29:32

标签: excel vba excel-vba

希望在此处填写变量范围。我可以向右填充我的公式,但是当我想要将其公式化时,公式就会消失。我还附上了一张照片,A栏以“基金名称”开头。希望有人能帮助我,谢谢!表格链接在这里。 1https://i.stack.imgur.com/y1ZVH.png

Sub Six_Continue()
Dim Lastrow As Long
Dim lrow As Range
Dim Lastcol As Long
Dim lcol As Range

Lastrow = Cells(Rows.Count, 1).End(xlUp).Row
Set lrow = Range("C5:C" & Lastrow)

Lastcol = Cells(1, Columns.Count).End(xlToLeft).Column
Set lcol = Range("C3", Cells(3, Lastcol))


Range("C5").FormulaArray = "=IFERROR(INDEX(DataTable[[Period]:[Period]],SMALL(IF(DataTable[[LP ID]:[LP ID]]=C$2,IF(DataTable[[Fund ID]:[Fund ID]]=$B5,ROW(DataTable[[Fund ID]:[Fund ID]])-ROW(DataTable[[Fund ID]:[Fund ID]]))),1)),"" "")"
Range("C5", lcol.Offset(2)).FillRight
Range("C5", lcol.Offset(2)).FillDown
End Sub

1 个答案:

答案 0 :(得分:1)

下面的代码对我有用(使用简化的数组公式)。

Sub Six_Continue()
    ' 25 Jan 2018

    Dim Rng As Range
    Dim LastRow As Long
    Dim LastClm As Long

    With ActiveSheet                ' better specify by name
        LastRow = .Cells(.Rows.Count, 1).End(xlUp).Row
        LastClm = .Cells(1, .Columns.Count).End(xlToLeft).Column
        Cells(5, 3).FormulaArray = "=IFERROR(INDEX(DataTable[[Period]:[Period]],SMALL(IF(DataTable[[LP ID]:[LP ID]]=C$2,IF(DataTable[[Fund ID]:[Fund ID]]=$B5,ROW(DataTable[[Fund ID]:[Fund ID]])-ROW(DataTable[[Fund ID]:[Fund ID]]))),1)),"" "")"
'        .Cells(5, 3).FormulaArray = "= $a1 * $k1:$k5 * C$1"
        Set Rng = Range(.Cells(5, 3), .Cells(5, LastClm))
        Rng.FillRight
        Set Rng = Range(.Cells(5, 3), .Cells(LastRow, LastClm))
        Rng.FillDown
    End With
End Sub