在没有自动填充的范围内粘贴公式

Posted

技术标签:

【中文标题】在没有自动填充的范围内粘贴公式【英文标题】:Paste formula in a range without autofill 【发布时间】:2014-05-06 12:42:41 【问题描述】:

我正在尝试在不使用自动填充的情况下将公式放入一系列单元格中。我之前让它与自动填充一起工作,但想改变它,似乎无法让它工作。有人可以告诉我我做错了什么吗?无法设置 Range cHere 的 FormulaArray 属性是我所拥有的:

 With ActiveSheet.ListObjects(1)
    Cells(1, .ListColumns.Count - 5).Value = "STUDENT POINTS"
    Range(Cells(3, .ListColumns.Count - 5), Cells(.ListRows.Count + 1, .ListColumns.Count - 5)).FormulaArray = "=IF(SUM(" & Range("E3").Address(False, True) & ":" & Cells(3, intTotalItems + 4).Address(False, True) & ")>0,SUM(" & Range("E3").Address(False, True) & ":" & Cells(3, intTotalItems + 4).Address(False, True) & "),"""")"
    'rngAssignment.Offset(2, intTotalItems + 1).AutoFill Destination:=Range(rngAssignment.Offset(2, intTotalItems + 1), rngAssignment.Offset(2, intTotalItems + 1).End(xlDown))
 End With

注意:第四行被注释掉了。我以前的方式使用了那条线。

谢谢!

【问题讨论】:

您是否尝试过检查您是否正确构建了您的范围和公式?尝试检查您正在写入公式的实际范围地址。与您的实际公式相同。 我知道这个公式是正确的,因为它在我更改代码之前就已经起作用了。但我可以仔细检查一下。我确定范围地址也是正确的。我在即时窗口中拼凑起来。 【参考方案1】:

我已经尝试过了。你有一个未定义的符号 intTotalItems 如果我尝试用一​​些东西代替它和变量 lColCountMinusFive 然后代码工作和公式数组函数。诚然,我确实在调试时将您的代码拆开并定义了一些临时变量...

Sub T()

    Dim intTotalItems

    Dim lColCountMinusFive As Long


    With ActiveSheet.ListObjects(1)
       lColCountMinusFive = 1 'Meaden .ListColumns.Count - 5
       Cells(1, lColCountMinusFive).Value = "STUDENT POINTS"

       Dim rngToFill As Excel.Range
       Set rngToFill = Range(Cells(3, lColCountMinusFive), Cells(.ListRows.Count + 1, lColCountMinusFive))


       Dim sSum As String
       sSum = Range("E3").Address(False, True) & ":" & Cells(3, intTotalItems + 4).Address(False, True)


       rngToFill.FormulaArray = _
           "=IF(SUM(" & sSum & ")>0,SUM(" & sSum & "),"""")"

    End With

End Sub

错误信息是什么(如果有)?

【讨论】:

我得到的错误信息是“无法设置 Range 类的 FormulaArray 属性。” 我不明白 lcolcountminusfive。那不是变量。它与 With 语句一起使用。当然,也许我不是新手,所以我不明白。 :) 我添加了lcolcountminusfive 以减少重复,仅此而已。你可以恢复回来。错误消息抱怨范围覆盖。公式数组可能很繁琐,您需要更改数组中的每个单元格,否则它会报错。也就是说,你的新公式数组必须是完全相同的维度;如果你想改变尺寸,你需要先删除原来的,然后重写到空白的新单元格上。 我明白了为什么我做不到。表格中不允许使用多单元数组,我正在尝试将其放入表格中。哈哈!哇!有没有比自动填充更好的方法?

以上是关于在没有自动填充的范围内粘贴公式的主要内容,如果未能解决你的问题,请参考以下文章

Excel 自动填充和调整公式

具有变化范围的自动填充/填充公式

引用数字工作表名称的自动填充公式

Excel VBA:自动填充公式的代码,无论左侧列的长度是多少(因此不需要指定范围)

范围自动填充一行,最好只使用变量

制作动态 VBA 自动填充范围