了解信息函数
信息函数可以用来分析表达式的类型,所有这些函数都以 IS- 开头,返回一个 TRUE/FALSE 值,可以在任何逻辑表达式中使用。
ISBLANK
ISBLANK ( <Value> )
检查值是否为空,并返回 TRUE 或 FALSE
ISERROR
ISERROR ( <Value> )
检查值是否为错误,并返回 TRUE 或 FALSE
ISLOGICAL
ISLOGICAL ( <Value> )
检查值是否是逻辑值(TRUE 或 FALSE),并返回 TRUE 或 FALSE
ISNONTEXT
ISNONTEXT ( <Value> )
检查值是否为非文本(空白单元格不是文本),并返回 TRUE 或 FALSE
ISNUMBER
ISNUMBER ( <Value> )
检查值是否为数字,并返回 TRUE 或 FALSE
ISTEXT
ISTEXT ( <Value> )
检查值是否为文本,并返回 TRUE 或 FALSE
ISEMPTY
ISEMPTY(<table_expression>)
检查表或表表达式是否为空。
使用
COUNTROWS
统计表的行数也可以检查表是否为空,但这种做法的弊端在于当表不为空时,公式还计算出了它的行数,对于只需要判断是否为空的情况,这种做法产生了额外开销。而
ISEMPTY
的写法更简单、更直观且性能更好。
ISEMPTY (
CALCULATETABLE (
'Internet Sales',
'Product Category'[Product Category Name]
检测表是否为空的三种表达式(按使用优先级排序):
ISEMPTY ( <table expression> )
ISBLANK ( COUNTROWS ( <table expression> ) )
COUNTROWS ( <table expression> ) = 0
注:Excel 2013 不支持 ISEMPTY 函数
信息函数实例
你可能想知道是否可以将 ISNUMBER 与文本列一起使用,以检查是否可以将其转换为数字。不幸的是,你不能使用这种方法;如果要测试文本值是否可转换为数字,必须尝试转换并在失败时处理错误。例如,要测试文本类型的价格列是否包含有效数字,公式必须写成:
IsPriceCorrect = NOT ( ISERROR ( Sales[Price] + 0 ) )
公式向价格中添加零,以强制从文本值转换为数字;如果成功, 则它将返回 TRUE (因为 ISERROR 将返回 FALSE), 否则它将返回 FALSE (因为 ISERROR 返回 TRUE),转换将失败。例如, 如果价格列的某些行使用了 “N/A” 字符串。
但是, 如果你尝试使用 ISNUMBER, 例如下面的表达式, 将始终返回 FALSE:
IsPriceCorrect = ISNUMBER ( Sales[Price] )
在这种情况下,ISNUMBER 总是返回 FALSE,因为根据元数据,价格列不是数字,而是字符串类型,不管每一行的内容如何。