0

我有一个 Excel VBA,它使用 VBA 中的范围小计函数。一切都很好,但是我需要在某些列上做的是用不同的公式替换几列上的小计公式。

我需要这样做的原因是因为在其他列上我需要小计结果才能执行不同的计算。

我试过使用替换,但我的新公式没有显示。

我想要做

Selection.Replace What:="SUBTOTAL(9", Replacement:="RC[-1]/RC[-2]", _
LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False

如何获取我的新配方?

4

1 回答 1

0

当您Replace使用公式对单元格执行操作时,如果结果不是有效的公式,我认为不允许替换。鉴于SUBTOTAL您的原始公式的格式将类似于

=SUBTOTAL(9,C100:C150)

你的替换会导致

=RC[-1]/RC[-2],C100:C150)

这不是一个有效的公式

如果我理解正确你想要这样的东西

=SUBTOTAL(9,C100:C150)

成为这个

=RC[-1]/RC[-2]

为此,您可以使用Find搜索所选单元格以查看公式中是否有“SUBTOTAL(9”)。如果是,则将整个公式替换为所需的公式。请参见下面的示例

Dim myRange As Range
Dim searchResult As Range

Set myRange = Selection
Set searchResult = myRange.Find(What:="SUBTOTAL(9", LookIn:=xlFormulas)

Do While Not searchResult Is Nothing
    searchResult.Formula = "=RC[-1]/RC[-2]"
    Set searchResult = myRange.FindNext(searchResult)
Loop
于 2013-11-07T17:02:18.497 回答