Excel宏:修改公式并附加段

时间:2017-03-11 06:36:52

标签: excel vba excel-vba excel-formula

在Excel工作表中,我想通过删除最后一个字符并为其添加其他标准来修改多个公式。

基本上,而不是:

=SUMIFS(A1:A10, B1:B10, "", C1:C10, "Test")

我想:

=SUMIFS(A1:A10, B1:B10, "", C1:C10, "Test", C1:D10, "Test2")

鉴于我对VBA的普遍缺乏了解,我似乎无法弄明白......以下内容会产生错误:

Sub AppendCriterion()
    Dim a As String
    a = Right(Selection.Formula, Len(Selection.Formula) - 1)
    a = Selection.Formula + ", C1:D10, "Test2")"
    Selection.Formula = a
End Sub

1 个答案:

答案 0 :(得分:2)

我将为您逐步完成此操作,但将来我建议您使用Debug.Print和F8(步入)来解决您的代码问题。

第3行:

a = Right(Selection.Formula, Len(Selection.Formula) - 1)

这实际上是从左侧减去1个字符。

Input: =SUMIFS(A1:A10, B1:B10, "", C1:C10, "Test")
Output: SUMIFS(A1:A10, B1:B10, "", C1:C10, "Test")

所以,将Right(..)更改为Left(...)

Input: =SUMIFS(A1:A10, B1:B10, "", C1:C10, "Test")
Output: =SUMIFS(A1:A10, B1:B10, "", C1:C10, "Test"

现在我们已经删除了,让我们继续前进到第4行,你要附加新标准。

第4行

a = Selection.Formula + ", C1:D10, "Test2")"

有关此问题的一些注意事项,如果要在字符串中显示引号字符,则必须使用引号将其转义,这会让人感到有些困惑。此外,您正在设置a = Selection.Formula + ..这是原始的,而不是您在第3行修改的字符串。最后,您新添加的标准是C1:D10,这将导致计算错误,我想你想要D1:D10。

a = a + ", D1:D10, ""Test2"")"

最终答案

Sub AppendCriterion()
    Dim a As String
    a = Left(Selection.Formula, Len(Selection.Formula) - 1)
    a = a + ", D1:D10, ""Test2"")"
    Selection.Formula = a
End Sub