索引匹配在空单元格返回0,想要它变成“-”。

30

我已经到处查找并尝试了许多不同的方法,但都没有起作用。

我可以显示错误-,但我还希望返回空单元格-

现在空单元格返回0

如果有帮助的话,空单元格出现在$C$6:$DD$50部分。

=IFERROR(INDEX('Foundation Plates'!$C$6:$DD$50,MATCH($C9,'Foundation Plates'!$B$6:$B$50,0),MATCH(D$8,'Foundation Plates'!$C$5:$DD$5,0)),"-")

当公式没有返回零时,它会返回什么样的值,是数字还是文本? - barry houdini
考虑接受 =Index(...) & “” 的答案。这个答案更好,因为你不需要像当前被接受的答案那样重复公式。 - Christiaan Westerbeek
5个回答

101
=Index(...) & “”

它将把 0(空值)转换为空字符串。


3
这应该是建议答案。 - Orin Moyer
非常流畅!非常感谢。您能分享一下您是如何知道这个技巧的吗? - Jeremy Bradshaw
1
聪明!它通过添加空字符串将其强制转换为字符串,因此它不再猜测空为整数(这会将其转换为零),并强制使空实际上等于空白。如此简单而有效。 - labrys
4
这个不太行,它会将所有值转换为文本,如果目标需要格式化为日期,则可能会出现问题。 - Michael
我认为在&运算符的左侧放置空字符串更可取,因为它可以立即表明您正在处理一个字符串:="" & INDEX(...) - spiral_generator

30

你的公式返回了0,这意味着找到了匹配项,但相关单元格中的值为空或为0。 如果公式未找到任何匹配单元格,IFError将处理此情况并返回“-”。

要隐藏公式单元格中的零,可以使用自定义格式来隐藏零。

选择公式单元格并按照下面给出的格式进行自定义格式设置,与应用于公式单元格的现有格式相符。

1)如果公式单元格具有常规格式,请尝试以下内容...

0;-0;;@

2)如果公式单元格具有货币格式,请尝试以下内容...

$#,##0.00_);($#,##0.00);

3)如果公式单元格具有日期格式,请尝试以下内容...

mm/dd/yyyy;;

如果您想在公式单元格中显示“-”而不是空白和零,请更改自定义格式如下...

1)0;-0;-;@

2)$#,##0.00_);($#,##0.00);-

3)mm/dd/yyyy;;-


4
这是正确答案,这是格式问题而不是数值问题。对于Excel来说,0和空白是同样的东西。 - wooobie
1
@pyskell 感谢您的评论。 - Subodh Tiwari sktneer

7
添加一个ISBLANK条件是否能达到你的目标?
=IF(ISBLANK(<range>),"-",<your code>)

4
 =IFERROR(IF(INDEX('Foundation Plates'!$C$6:$DD$50,MATCH($C9,'Foundation Plates'!$B$6:$B$50,0),MATCH(D$8,'Foundation Plates'!$C$5:$DD$5,0))=0,"-",INDEX('Foundation Plates'!$C$6:$DD$50,MATCH($C9,'Foundation Plates'!$B$6:$B$50,0),MATCH(D$8,'Foundation Plates'!$C$5:$DD$5,0))),"-")

这个公式的作用类似于:
=IFERROR(如果Index=0,那么结果为"-",否则为Index的值,"-")
它能够正常工作是因为它会测试Index是否等于0,如果等于0,则结果为"-",否则结果为相应的值。

它仍然像我的代码一样运行。空单元格返回0。错误单元格返回“-”。我一定是漏了什么 :( - Matt Taylor
你可以使用=IFERROR( If(Index =0,"-",Index),"-"),但这太长了,所以我正在尝试找到一种更短的方法。 - yass

1

我一直有这个问题。我找到了两种可能的解决方案,但都不是理想的。

在末尾添加&""很容易并且有效,但如果你不需要返回值作为数字,我发现它通常会引起混乱,因为所有的数字都会以文本形式返回,所以除非我确定它不会造成问题,否则要尽量避免使用它。为了避免这种情况,你可以使用:

=IF([yourINDEXformula]="","",[yourINDEXformula])

这样可以将零作为零给出,并将空白显示为空白,同时保持数字为数字。不幸的是,这非常繁琐,特别是对于长或复杂的公式,因为你基本上必须输入两次。

Excel确实需要一个类似于IFERROR的IFBLANK函数...


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接