Идеальный способ - использовать абсолютные ссылки, как в ответе @ Gary's Student. Но если вы не хотите менять исходные формулы, то есть другие обходные пути.
Один умный способ - скопировать весь диапазон адресов, сначала удалив знак равенства, используя Find and Replace (или заменив 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 автоматически.