将公式从下面的单元格复制到新插入的单元格

时间:2019-02-09 23:06:52

标签: excel vba

当我尝试将公式从单元格复制到正上方的新插入的单元格时,我遇到了问题。

这是我的VBA代码:

#!/bin/bash

python -u alwayson.py    

让我们说单元格Rows(RowValue).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromRightOrBelow Cells(RowValue, 10).Resize(2, 1).Formula = Cells(RowValue + 1, 10).Formula 曾经有以下代码:

I7

但是在我的VBA代码的第一行之后,该单元格将变为=IFERROR(IF(A7="","",INDEX(Table_TipData14[NC_STATUS],MATCH('Rack Report'!A7,Table_TipData14[SN],0))),"") ,并且其中的代码将自动更改为:

I8

这是一件好事,这就是我要在那行VBA代码之后发生的事情。

问题是,第二行VBA代码运行时。它使单元格=IFERROR(IF(A8="","",INDEX(Table_TipData14[NC_STATUS],MATCH('Rack Report'!A8,Table_TipData14[SN],0))),"") 成为单元格I7,并使单元格I8成为单元格I8

任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:1)

从下方或上方复制公式

您的代码完全执行了应该执行的操作,但没有您想要的。

当前代码的简化示例

对于rowvalue = 7

单元格J6包含=A6
单元格J7包含=A7
单元格J8包含=A8

插入行时,单元格J6保持不变,单元格J7为空,上一个单元格J7在(J8)下方移动了一行,并包含{{ 1}}和上一个单元格=A8在(J8)下移动了一行,并包含J9

现在,当您应用=A9时,范围将是.Resize(2)(插入的空白单元格和以前的J7:J8单元格,现在是J7单元格)。现在,您将J8的公式J8写入=A8并将其保留为J7,下一行(=A8)中的公式变为J8,这不是您想要的。

解决方案1 ​​

您可以从下面的行中 =A9 单元格,这将复制公式。

Copy

解决方案2

如果您坚持使用 Sub CopyCell1() Const rowvalue As Long = 7 Rows(rowvalue).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromRightOrBelow Cells(rowvalue + 1, 10).Copy Destination:=Cells(rowvalue, 10) ' Or simply: 'Cells(rowvalue + 1, 10).Copy Cells(rowvalue, 10) End Sub ,则必须在上一个单元格(上方的单元格)中添加一个Resize,然后“应用” Offset,然后从上方的单元格(例如Resize)开始,从上方的单元格(例如J6)中编写公式。

=A6