Изменить несколько ссылок на ячейки с относительного на абсолютный ($) одновременно - PullRequest
0 голосов
/ 04 июля 2018

В моей электронной таблице Excel есть следующие значения и формулы:

          A                             
1      Shirt         =Sheet2!A2
2        50          =C1
3       350          =Sheet3!D7
4    Product B       =F8
5
6

Значения в Столбец A Я получаю из других частей файла Excel, используя только относительные ссылки на ячейки.

Теперь я хочу изменить эти ссылки на ячейки относительно absolute , чтобы они выглядели так:

          A                             
1      Shirt         =Sheet2!$A$2
2        50          =$C$1
3       350          =Sheet3!$D$7
4    Product B       =$F$8
5
6

Поэтому я попытался перейти с VBA с здесь :

Sub Test()
ActiveCell.Formula = Application.ConvertFormula(ActiveCell.Formula, xlA1, xlA1, 1)
End Sub

Однако, это работает только для активной ячейки, но я хочу, чтобы VBA прошел весь лист. Поэтому я пытался что-то вроде этого:

Sub Test()
Sheet1.Formula = Application.ConvertFormula(Sheet1.Formula, xlA1, xlA1, 1)
End Sub

Теперь я получаю сообщение об ошибке «Объект или метод не найден». Как мне изменить VBA, чтобы он работал?

Ответы [ 2 ]

0 голосов
/ 07 марта 2019

В качестве альтернативы, надстройка ASAP Utilities for Excel предоставляет команду меню, которая преобразует выбранный диапазон ячеек в абсолютные, смешанные или относительные ссылки. Это работало без нареканий для меня годами.

После установки надстройки в меню «Формулы» выберите «Изменить ссылочный стиль формулы (например, от А1 до $ А1 и т. Д.).

0 голосов
/ 04 июля 2018

Изменить это сразу будет невозможно. Необходим некий цикл над ячейками с одной формулой.

Вы можете получить специальные ячейки, используя Range.SpecialCells Method . Таким образом, вы можете получить все ячейки формулы, а затем выполнить их цикл и преобразовать их в абсолютные:

Sub convertAllSheetFormulasToAbsolute()
 Dim oCell As Range
 With ActiveSheet
  For Each oCell In .Cells.SpecialCells(Type:=xlCellTypeFormulas)
   oCell.Formula = Application.ConvertFormula(oCell.Formula, xlA1, xlA1, xlAbsolute)
  Next
 End With
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...