单元格 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
我过去使用的是以下按键顺序:
- 编辑公式:F2
- 选择公式:Ctrl+a
- 复制公式:Ctrl+c
- 退出公式: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 步。