Excelmacros:修改公式和附加段
在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
我将为您介绍这一点,但是在将来,我推荐使用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")"
关于这个的一些注意事项,如果你想在一个string中显示一个引号字符,你必须用引号来转义它,这会让人有些困惑。 此外,你正在设置a = Selection.Formula
+ ..这是原来的,而不是你在第3行修改的string。最后,你新添加的标准是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