当我尝试将公式从单元格复制到正上方的新插入的单元格时,我遇到了问题。
这是我的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
。
任何帮助将不胜感激!
答案 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
,这不是您想要的。
您可以从下面的行中 =A9
单元格,这将复制公式。
Copy
如果您坚持使用 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