2016-02-26 64 views
-1

我在单元格中有一个IFERROR公式(假设为A1),它在出现错误时返回“”。因此,当发生错误时,单元格为“空白”。当我尝试使用该单元格的值时,例如通过执行Cells(1,1)=Cells(1,1).Value+1,我得到一个Type Missmatch错误。如果我删除公式并将单元格留空,那么我不会得到那个错误。有人知道为什么会发生这种情况吗?使用具有公式的单元格的值返回类型错过匹配

+0

因为在输入一个空字符串(这是一个字符串)和一个空白单元格(默认等于0)之间存在差异。 –

+0

根据你的IFERROR公式,空白单元格的值不是一个数字。所以'“”+ 1'导致类型不匹配。 – miroxlav

+1

最好的事情是将0而不是“”。那么你不会有这个问题。 –

回答

1

"" + 1不被VBA接受,因为一个是字符,一个是数字。

您可以:

  • 拥有的,而不是 “IFERROR返回0” 以避免类型不匹配
  • 使用if语句来检查 “”:

    If Cells(1,1) = "" Then 
        Cells(1,1) = 1 
    Elseif IsNumeric(Cells(1,1)) Then 
        Cells(1,1) = Cells(1,1).Value + 1 
    End If 
    
  • 转换“ “为0:

    Cells(1,1) = Val(Cells(1,1).Value) + 1 
    
+0

还有其他方法吗?像将字符串转换为数字一样? –

+0

'如果Cells(1,1)=“”Then Cells(1,1).Value = 0' - 类似的东西? – teepee

+0

我在想内置函数... –

相关问题