我在Excel 2003中遇到动态列表的问题,其中一些我想要为空的单元格返回#NUM!
。我试过操作以下代码,但无济于事:
= IF(ISERROR(INDEX(venue_name,SMALL(IF(($ A $ 10 = date_ns)*(COUNTIF($ A $ 13:A29,venue_name)= 0),ROW(date_ns)-MIN(ROW(date_ns) )+ 1,“”),1)))
我知道它与语法/括号有关,但已经用尽了我自己尝试不同的组合。没有IF(ISERROR(
和结束括号,代码运行得非常好。
答案 0 :(得分:1)
要使用ISERROR,您必须正常重复整个公式,但可能错误是由匹配条件数量不足引起的,因此请在A14中尝试此版本:
[修订更简单的版本]
=IF(SUM(($A$10=date_ns)*(COUNTIF($A$13:A13,venue_name)=0)),INDEX(venue_name,MATCH(1,($A$10=date_ns)*(COUNTIF($A$13:A13,venue_name)=0),0)),"")
以 CTRL + SHIFT + ENTER 确认并向下复制
....或者你可以使用这个版本,不需要 CTRL + SHIFT + ENTER
=IF(SUMPRODUCT(($A$10=date_ns)*(COUNTIF($A$13:A13,venue_name)=0)),INDEX(venue_name,MATCH(1,INDEX(($A$10=date_ns)*(COUNTIF($A$13:A13,venue_name)=0),0),0)),"")
参见示例文件here
答案 1 :(得分:0)
似乎已被事件所取代,但考虑到= ISERROR,因为大师说“你必须正常重复整个公式”。 (在具有= IFERROR的Excel的更高版本中不需要)。因此:
=IF(
ISERROR(
INDEX(venue_name, SMALL(IF(($A$10=date_ns)*(COUNTIF($A$13:A17,venue_name)=0), ROW(date_ns)-MIN(ROW(date_ns))+1, ""), 1))
)
,"",
INDEX(venue_name, SMALL(IF(($A$10=date_ns)*(COUNTIF($A$13:A17,venue_name)=0), ROW(date_ns)-MIN(ROW(date_ns))+1, ""), 1))
)
第三和第六行(INDEX ...)是'工作公式'。第一个,第五个和最后一个是= IF条件(如果为TRUE则假定需要空白结果)。第二行和第四行是= ISERROR,如果发现错误(由于'工作公式',则返回TRUE),否则返回FALSE。
可以表示为:= IF(工作公式中的错误,空白,工作公式)。