在没有自动填充的范围内粘贴公式
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
以减少重复,仅此而已。你可以恢复回来。错误消息抱怨范围覆盖。公式数组可能很繁琐,您需要更改数组中的每个单元格,否则它会报错。也就是说,你的新公式数组必须是完全相同的维度;如果你想改变尺寸,你需要先删除原来的,然后重写到空白的新单元格上。
我明白了为什么我做不到。表格中不允许使用多单元数组,我正在尝试将其放入表格中。哈哈!哇!有没有比自动填充更好的方法?以上是关于在没有自动填充的范围内粘贴公式的主要内容,如果未能解决你的问题,请参考以下文章