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