与替代,忽略和动态范围相加

时间:2015-07-27 15:39:31

标签: excel excel-vba sum formula substitution vba

我非常接近用this answer given by "barry houdini"来解决我的问题但是我遇到了将其纳入我的需求的问题。

 =SUMPRODUCT(VALUE(0&SUBSTITUTE(A1:A8,"*","")))
  

编辑#3 - @Rory 为解决我的问题提供了非常好的答案。但我没想到的是,如果在单元格内输入非数值,则公式会返回错误。所以我真的想将以下公式调整为忽略字母“x”,或非数字值(如果这更容易):

-

ActiveCell.FormulaR1C1 = "=SUMPRODUCT(VALUE(0&SUBSTITUTE(INDIRECT(""R10C:R[-1]C"",FALSE),""s"","""")))" Dim Cell As Range For Each Cell In Range("all_cells") Cell.Formula = Range("one_cell").Formula Next

我现在要做的是编写一个VBA脚本来总结一个动态范围,并且包括在它们后面有“S”的值但不会失败或者在任何其他字母上返回错误。最重要的是字母“x”。

在设置了第一个公式之后,我想将该公式自动填充到右侧;停在一个已知的栏目上。

  

结束编辑

为了历史和其他谷歌搜索,这里是我在使用“s”和“x”之前使用的原始代码。

ActiveCell.FormulaR1C1 = _
    "=SUM(INDIRECT(ADDRESS(10,COLUMN())&"":""&ADDRESS(ROW()-1,COLUMN())))"

这样做基本上是从一个设置行(第10行)汇总,并在具有此公式的单元格之前的行上停止汇总。

我想要达到的例子:“3 + 4 S +2 + x = 9” ;而不是“= 5”或“##”

1 个答案:

答案 0 :(得分:0)

我终于解决了我的问题! 我意识到嵌套替代公式可能是一个很好的解决方案,经过几次错误后我才意识到范围只需要提一次,瞧!瞧!

ActiveCell.FormulaR1C1 = "=SUMPRODUCT(VALUE(0&SUBSTITUTE(0&SUBSTITUTE(INDIRECT(""R10C:R[-1]C"",FALSE),""s"",""""),""x"","""")))"