【问题标题】:Is it possible to emulate cut-paste properties while copying and pasting in excel?在excel中复制和粘贴时是否可以模拟剪切粘贴属性?
【发布时间】:2017-01-25 07:00:54
【问题描述】:

我正在尝试将一系列单元格复制粘贴到电子表格中的另一个位置。 问题是,与剪切粘贴不同,当我使用复制粘贴时,我会丢失原始单元格引用。我想知道是否可以创建一个人工“剪切粘贴”选项,但不删除原始数据,并且能够多次重复该操作。

通过使用记事本或 VBA 代码复制公式,我找到了解决此问题的部分方法(如 here 所述)。但是,它仍然没有提供完整的解决方案,因为我仍然希望更改某些单元格 - 例如,应更新具有 SUM 功能的单元格,以便它们计算新粘贴的单元格的总和,而不是旧单元格的总和。这是剪切和粘贴选项能够做到的事情,但我找不到任何并行的方法可以通过复制粘贴来做到这一点。

任何帮助将不胜感激。

【问题讨论】:

  • 要有一点耐心,处理你的代码,从小而简单的开始,慢慢地循序渐进,直到你的代码涵盖了你需要的一切。当您遇到“特定”编程问题/错误时来 SO。
  • 问题是您没有正确设置公式引用。这可能会帮助你Relative and Absolute Cell References

标签: excel vba


【解决方案1】:

我认为这可能会对您有所帮助!例如,您在Sheet2!B4 有一个公式,如下所示:

=IF(B2>A4,Sheet1!B4,B2/B12)

并且您想将其复制/粘贴到 Sheet2!B5Sheet2!C5 -current sheet- 并且您希望它变成(预期结果):

=IF(B2>A5,Sheet1!B5,B2/B12)        '=> for B5 (B2,B12: no changes & A4>A5: just row changes)
=IF(B2>A6,Sheet1!C6,B2/B12)        '=> for C6 (B2,B12: no changes & A4>A6: just row changes)

但 Excel 是这样做的:

=IF(B3>A5,Sheet1!B5,B3/B13)        '=> for B5
=IF(C4>B6,Sheet1!C6,C4/C14)        '=> for C6

在这种情况下,我将公式更改为:

=IF(INDIRECT("B2")>INDIRECT(CONCATENATE("A", ROW())),Sheet1!B5,INDIRECT("B2")/INDIRECT("B12"))

注意:

  • 对于任何不应更改的参考,请使用 INDIRECT("<refrence>")
  • 对于任何部分更改,您需要使用INDIRECT("<refrence>") 并通过ADDRESS() 等函数单独生成<reference>

【讨论】:

  • 对 OP 的第一条评论是“有一点耐心 (sic)” .... 才 2 年。 :p
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-02-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-10
  • 2013-05-13
相关资源
最近更新 更多