如何在值为0或在公式

时间:2017-09-01 17:36:24

标签: excel vba excel-vba excel-formula

如果单元格的值为0或不存在,如何告诉宏将单元格留空而不放零?在其他类型的公式中,我刚刚添加了“” - “”“”,但在这种情况下,它不起作用......

.Range("Z" & i & ":AB" & i).Formula = "=SUMIF($D$2:$D$" & lastrow & ",$Y" & i & ",E$2:E$" & lastrow & ")/" & dic(.Range("Y" & i).Value)

工作场合的一个例子就是这个

.Range("AD" & i).Formula = "=IF(INDEX($I$2:$I$" & lastrow & ",MATCH($Y" & i & ",$D$2:$D$" & lastrow & ",0))=0,Z" & i & ",""-"")"

2 个答案:

答案 0 :(得分:1)

我认为有太多信息缺失,但是如果我知道你想使用VBA在你的单元格中添加内置函数(SUMIF),但你希望这个SUMIF返回""而不是0(这是正常的返回类型,因为函数应该返回一个数字),那么你可以做的是构建一个嵌套函数,说如果你的函数的结果如果你写了那个结果,那么你就写了"":

.Range("Z" & i & ":AB" & i).Formula = "=IF(SUMIF($D$2:$D$" & lastrow & ",$Y" & i & ",E$2:E$" & lastrow & ")/" & dic(.Range("Y" & i).Value) & "<> 0, SUMIF($D$2:$D$" & lastrow & ",$Y" & i & ",E$2:E$" & lastrow & ")/" & dic(.Range("Y" & i).Value), "")

...但如果您向我们提供更多信息,可能是获得结果的更好方法(可能是用户函数,而不是直接放入单元格中的内置SUMIF)。

答案 1 :(得分:1)

示例中不起作用的公式不包含与工作公式示例相同的条件。

你的第二个公式基本上是“如果这个值是0,那么做X”。您的第一个公式只有SUMIF公式,它不会评估返回的值是否为0。

您应该为SUMIF公式添加相同的逻辑,以获得相同的结果。具体而言,您需要为此添加“IF”公式。这是一个我没有测试过的例子,但应该或多或少准确。

.Range("Z" & i & ":AB" & i).Formula = "=if(SUMIF($D$2:$D$" & lastRow & ",$Y" 
& i & ",E$2:E$" & lastRow & ")/" & dic(.Range("Y" & i).Value) & "=0,""""," & 
"SUMIF($D$2:$D$" & lastRow & ",$Y" & i & ",E$2:E$" & lastRow & ")/" & 
dic(.Range("Y" & i).Value) & ")"

这将构建公式以检查0。如果您希望VBA检查0,那将是一个不同的解决方案。

更新您的评论:

我认为这是你正在寻找的,虽然我认为你的公式有错误。

"=IF($Z$2:$Z$" & lastRow & "*$AC$2:$AC" & lastRow & "=0,""-""," & "$Z$2:$Z$" 
& lastRow & "*$AC$2:$AC" & lastRow & ")"
相关问题