首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Excel VBA -解释"N/A“值

Excel VBA -解释"N/A“值
EN

Stack Overflow用户
提问于 2011-01-07 11:10:35
回答 3查看 82.8K关注 0票数 10

我正在遍历一个电子表格,其中包含一列以double类型表示的价格。我试图找到一个在电子表格上显示为"n/a"的缺失值,但它不允许我将其解释为string类型。

包含"n/a"的单元格似乎是integer类型;我如何读取它?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-01-07 11:18:07

VBA将包含#N/A的单元格作为包含错误代码的变体进行检索

一般来说,最好的做法是将Excel单元格分配给变量,因为单元格可以包含数字(双精度)、逻辑、字符串或错误,而您无法预先知道单元格将包含什么。

票数 6
EN

Stack Overflow用户

发布于 2011-01-11 01:32:03

如果您要做的只是检查错误值,那么:

Application.WorksheetFunction.IsNA(rngToCheck.Value)

其中,rngToCheck是要检查#N/A错误值的单元格

(这里有一个可从Excel VBA here调用的工作表函数列表)

您还可以检查rngToCheck.Text,因为它将包含字符串"#N/A“

相反,如果您希望读取生成#N/A的单元格中的公式,那么rngToCheck.Formula将执行此操作

票数 11
EN

Stack Overflow用户

发布于 2013-01-29 08:39:57

你可以准备你想要检查的电子表格,如下所述,并评估包含IS函数的特殊单元格,很容易在VBA中检查它们的TrueFalse。或者,您可以编写自己的VBA函数,如下所示。

有一些Excel functions可以检查特殊值的单元格,例如:

代码语言:javascript
运行
AI代码解释
复制
=ISNA(C1)

(假设C1是要检查的单元格)。如果单元格为#N/A,则返回True,否则返回False

如果您想要显示单元格的范围(比如"C1:C17")是否有任何包含#N/A的单元格,使用以下命令可能是明智的:

代码语言:javascript
运行
AI代码解释
复制
=if(ISNA(C1:C17); "There are #N/A's in one of the cells"; "")

不幸的是,这是而不是,它不会像预期的那样工作。您只能计算单个单元格。

但是,您可以使用以下命令间接执行:

代码语言:javascript
运行
AI代码解释
复制
=if(COUNTIF(E1:E17;TRUE)>0; "There are #N/A's in one of the cells"; "")

假设每个单元格E1E17都包含要检查的每个单元格的ISNA公式:

代码语言:javascript
运行
AI代码解释
复制
=ISNA(C1)
=ISNA(C2)
...
=ISNA(C17)

您可以通过在列上单击鼠标右键并选择E上下文菜单中的隐藏来隐藏列,这样电子表格的用户就看不到此列。它们仍然可以被访问和评估,即使它们是隐藏的。

在VBA中,您可以将range对象作为RANGE参数传递,并使用FOR循环分别计算这些值:

代码语言:javascript
运行
AI代码解释
复制
Public Function checkCells(Rg As Range) As Boolean
    Dim result As Boolean
    result = False
    For Each r In Rg
        If Application.WorksheetFunction.IsNA(r) Then
            result = True
            Exit For
        End If
    Next
    checkCells = result
End Function

此函数在内部使用IsNA()函数。它必须放在模块中,然后才能在电子表格中使用,如下所示:

代码语言:javascript
运行
AI代码解释
复制
=checkCells(A1:E5)

如果任何单元格为#N/A,则返回True,否则返回False。必须将工作簿另存为启用宏的工作簿(扩展名XLSM),并确保宏未被禁用。

Excel提供了更多类似上述功能:

代码语言:javascript
运行
AI代码解释
复制
ISERROR(), ISERR(), ISBLANK(), ISEVEN(), ISODD(), ISLOGICAL(), 
ISNONTEXT(), ISNUMBER(), ISREF(), ISTEXT(), ISPMT()

例如,ISERR()检查除#N/A之外的所有单元格错误,并可用于检测计算错误。

所有这些功能都在Excel的内置帮助中进行了描述(按F1,然后输入"IS Functions“作为搜索文本以获取解释)。它们中的一些可以在VBA中使用,一些只能用作单元格宏函数。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4624861

复制
相关文章

相似问题

领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文