代码执行结束后,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)
答案 0 :(得分:0)
此代码会将公式插入整个范围,更新相对于位置的非固定引用(例如,如果它没有“ $”,则将在您在行或列之间移动时进行更新),不需要循环:
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