在列

时间:2018-02-05 22:42:45

标签: excel vba loops excel-formula

我想要将这个公式=1+ LEN(AT2) - LEN(SUBSTITUTE(AT2, "+", ""))应用于列AU,它会动态地将变量(在这种情况下为AT2)更改为迭代到下一行,例如AT2,AT3,AT4。

目前,此代码不断被抛出

  

应用程序/对象错误

我似乎无法解决这个问题。基本上我希望公式做的是计算" +"发生在之前的列中,并为该数字添加1。任何帮助都会很棒!提前谢谢。

With wsIt
    Range("AU2:AU" & LastRow).Formula = "=LEN(AT2) - LEN(SUBSTITUTE(AT2, " + ", ""))"
End With

4 个答案:

答案 0 :(得分:2)

我相信只需要在公式中使用它们时就需要加倍引号:

Range("AU2:AU" & LastRow).Formula = "=LEN(AT2) - LEN(SUBSTITUTE(AT2, "" + "", """"))"

注意:请注意,这会搜索[space]+[space]替换,因此不会将空格替换为asd+asd,只需asd + asd

enter image description here

答案 1 :(得分:1)

如果你想为每个细胞AT2,AT3,AT4 ...使用动态公式...使用FormulaR1C1,计算标准" +"没有空格和双引号""+"" """"

.Range("AU2:AU" & LastRow).FormulaR1C1 = "=LEN(RC[-1]) - LEN(SUBSTITUTE(RC[-1], ""+"", """"))+1"

答案 2 :(得分:1)

如其他回复中所述,您需要在带引号的字符串中加倍双引号。或者,您可以使用无需引号即可重现相同结果的方法。

With wsIt
    Range("AU2:AU" & LastRow).Formula = "=LEN(AT2) - LEN(SUBSTITUTE(AT2, CHAR(41), TEXT(,)))"
End With

答案 3 :(得分:0)

缺少“。”在Range前面 - 应该是:

With wsIt
    .Range("AU2:AU" & LastRow).Formula = "=LEN(AT2) - LEN(SUBSTITUTE(AT2, " + ", ""))"
End With

关于“”“”的其他答案也适用 - 也可以使用chr(34)来发布报价。