我有一些连续的公式。我想将它们复制到其余数据的末尾。
使用普通公式时,以下代码有效:
With Sheets("Sheet1")
Set formRange = Range(.Range("G2"), .Range("O2").End(xlToRight))
formRange.Copy
formRange.Resize(Range("D" & Rows.Count).End(xlUp).Row - 1).PasteSpecial Paste:=xlPasteFormulas
Application.CutCopyMode = False
.Range("A1").Select
End With
但是,当我用数组公式替换一些公式时,我得到一个运行时错误1004,表示PasteSpecial method of Range class failed
。
有什么方法吗?
答案 0 :(得分:2)
如评论所述,您无法更改数组的一部分。所以试试这个:
Dim formRange As Range, arrForm As String
With Sheets("Sheet1")
Set formRange = Range(.Range("G2"), _
.Range("O2").End(xlToRight))
arrForm = formRange.FormulaArray
formRange.ClearContents
formRange.Resize(.Range("D" & _
.Rows.Count).End(xlUp).Row - 1).FormulaArray = arrForm
End With
不过,请注意我在这一行中添加的额外点:
formRange.Resize(.Range("D" & _
.Rows.Count).End(xlUp).Row - 1).FormulaArray = arrForm
我认为您与同一张纸的 D列有关 如果它只是几个范围内的一个数组公式输出,则上述工作 如果每个单元格具有不同的数组公式,那么只需在代码中添加偏移量,如下所示:
With Sheets("Sheet1")
Set formRange = Range(.Range("G2"), _
.Range("O2").End(xlToRight))
formRange.Copy
formRange.Offset(1, 0).Resize(.Range("D" & _
.Rows.Count).End(xlUp).Row - 1).PasteSpecial xlPasteFormulas
End With
答案 1 :(得分:1)
您需要使用Range.FormulaArray方法:
With Worksheets("Sheet1")
Set formRange = Range(.Range("G2"), .Range("O2").End(xlToRight))
formRange.Copy
Set newRange = (Range("D" & Rows.Count).End(xlUp).Row - 1)
newRange.FormulaArray = formRange
Application.CutCopyMode = False
.Range("A1").Select
End With