首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从下面的单元格复制公式到新插入的单元格

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

Stack Overflow用户
提问于 2019-02-09 23:06:52
回答 1查看 86关注 0票数 1

当我试图将公式从一个单元格复制到一个新插入的单元格中时,我遇到了一个问题。

这是我的VBA代码:

代码语言:javascript
复制
Rows(RowValue).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromRightOrBelow
Cells(RowValue, 10).Resize(2, 1).Formula = Cells(RowValue + 1, 10).Formula

让我们说,单元格I7过去有以下代码:

代码语言:javascript
复制
=IFERROR(IF(A7="","",INDEX(Table_TipData14[NC_STATUS],MATCH('Rack Report'!A7,Table_TipData14[SN],0))),"")

但是,在我的VBA代码第一行之后,该单元将变成I8,其中的代码将自动更改为:

代码语言:javascript
复制
=IFERROR(IF(A8="","",INDEX(Table_TipData14[NC_STATUS],MATCH('Rack Report'!A8,Table_TipData14[SN],0))),"")

这很好,这就是我想在这行VBA代码之后发生的事情。

问题是,当第二行VBA代码运行时。它使细胞I7细胞I8应该是什么,使细胞I8细胞I9应该是什么。

任何帮助都将不胜感激!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-02-09 23:49:47

从下面或上面复制公式

您的代码做的正是它应该做的,但不是您想要的。

简化的当前代码示例

对于rowvalue = 7

单元格J6包含=A6

单元格J7包含=A7

单元格J8包含=A8

插入行时,单元格J6保持不变,单元格J7为空,前一个单元格J7在(J8)下面移动一行,并包含=A8和前一个单元格J8,将一行移动到(J9)下面,并包含=A9

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

解决方案1

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

代码语言:javascript
复制
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

解决方案2

如果坚持使用Resize,,则必须向前一个单元格(上面的单元格)添加一个Offset,然后“应用”Resize,并从上面的单元格(例如,=A6)开始,从上面的单元格(例如,J6)写入公式。

代码语言:javascript
复制
Sub CopyCell2()
    Const rowvalue As Long = 7
    Rows(rowvalue).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromRightOrBelow
    Cells(rowvalue, 10).Offset(-1).Resize(2).Formula _
            = Cells(rowvalue - 1, 10).Formula
End Sub
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54611716

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档