Как предотвратить форматы и формулы расширенных диапазонов данных Excel от изменения формул, введенных кодом - PullRequest
0 голосов
/ 26 апреля 2019

После завершения выполнения кода Excel расширяет диапазоны в формулах, введенных кодом, для включения всего списка, а не диапазона, который был введен. Как я могу предотвратить это?

Когда я проверяю формулы во время выполнения кода, диапазоны отображаются правильно. Как только выполнение кода заканчивается, диапазоны во всех формулах расширяются. Я не хочу постоянно отключать функцию расширения диапазонов, если мне не нужно.

Application.ExtendList = False  
    oSht.Cells(oRow, 11).FormulaR1C1 = "=ROUND(100*SUMIF(R2C4:RC4,RC4,R2C8:RC8)/RC9,0)"  
Application.ExtendList = True

Я хочу, чтобы формулы в последующих строках выглядели так:

SUMIF($D$2:D845,D845,$H$2:H845)  
SUMIF($D$2:D846,D846,$H$2:H846)  
SUMIF($D$2:D847,D847,$H$2:H847)  
SUMIF($D$2:D848,D848,$H$2:H848)  

Excel изменяет формулу так:

SUMIF($D$2:D848,D845,$H$2:H848)  
SUMIF($D$2:D848,D846,$H$2:H848)  
SUMIF($D$2:D848,D847,$H$2:H848)  
SUMIF($D$2:D848,D848,$H$2:H848) 

1 Ответ

0 голосов
/ 26 апреля 2019

Этот код будет вставлять формулу во весь диапазон, обновляя нефиксированные ссылки относительно размещения (например, если у него нет «$», он будет обновляться при перемещении между строками или столбцами), что делаетне требуется цикл:

with sheets("")
    .range(.cells(startRow,startCol),.cells(endRow,endCol)).formula = "=SUMIF($D$2:D845,D845,$H$2:H845)"
End with

Если вы хотите выполнить цикл, вам нужно, чтобы ваш код обновлял формулу, соответствующую циклу, так что ... обратите внимание, что она помещает точную формулу в ячейку:

with sheets("")
    .cells(oRow,11).formula = "=SUMIF($D$2:D" & oRow-1 & ",D" & oRow & ",$H$2:H" & oRow-1 & ")"
End with
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...