如何将单元格中使用的公式作为文字公式复制到另一个单元格

如何将单元格中使用的公式作为文字公式复制到另一个单元格

单元格 A1 的值为 1。单元格 A2 的值为 2。单元格 A3 中输入了公式“ = A1 + A2”,显示值为 3。类似地,列 B1、B2、B3、C1、C2、C3 等也是如此。

我想将公式(在 A3、B3 等中)复制到单元格 A4、B4 等中,使得 A4 读作“A1 + A2”,B4 读作“B1 + B2”等。可以这样做吗?

也许这个要求看起来很奇怪,但这只是因为我简化了我的项目以显示问题的本质。我需要这样做来检查重复输入,看看是否有相同的表达式,比如 A1 或 A2 或 C3,出现在多个公式中。

答案1

而不是使用:

=A1 + A2

使用:

=$A$1 + $A$2

这将复制而不进行调整。

答案2

理想的方法是使用绝对引用,如@Gary's Student 的答案所示。但如果您不想更改原始公式,那么还有其他解决方法。

一个聪明的方法是复制整个范围的地址,方法是先使用“查找和替换”删除等号(或按照a=建议替换为这里)。然后复制并粘贴,最后将其改回=。方法 3 中对此进行了说明,网址为https://www.ablebits.com/office-addins-blog/2016/01/20/copy-formula-excel/#copy-formula-without-changing-references

我过去使用的是以下按键顺序:

  1. 编辑公式:F2
  2. 选择公式:Ctrl+a
  3. 复制公式:Ctrl+c
  4. 退出公式:Esc

现在粘贴未改变的公式。

如果这是您需要经常做的事情,可能值得设置像这样的宏,它执行步骤 1-3。

Sub CopyLiteralFormula
    document   = ThisComponent.CurrentController.Frame
    dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
    dispatcher.executeDispatch(document, ".uno:SetInputMode", "", 0, Array())
    dispatcher.executeDispatch(document, ".uno:SelectAll", "", 0, Array())
    dispatcher.executeDispatch(document, ".uno:Copy", "", 0, Array())
End Sub

我玩了几分钟但无法让它自动执行第 4 步。

答案3

在此处输入图片描述

1)选择A3:C3Ctrl+C

2)选择A4Ctrl+V

在此处输入图片描述

3)Ctrl+X

4)选择A5Ctrl+V

在此处输入图片描述

5)Ctrl+C

6)选择A4Ctrl+V

之后,A4:C4与 相同A3:C3,并且我们可以A5:C5根据需要清理 :

在此处输入图片描述

相关内容