繁体   English   中英

INDEX MATCH返回不为空的值

[英]INDEX MATCH to return value that is not blank

我有一个工作表,顶部有数年,底部有数月,中间是数据。 我想使用INDEX MATCH来获取数据,但是它返回空白单元格。 看起来像这样:

__A__  __B__  __C__  __D__
Year    2001   2002   2003
Jan     1000   2000
Feb     1000   2000   8000
Jan                   8000 

现在,当我在行中查找Jan并在列中查找2003时,它返回空白。

它来自不同的工作表,但看起来有点像这样:

=INDEX($1:$948576,MATCH($B171,$B:$B,0),MATCH(C$1,$1:$1,0)) 

2003年1月将只有一个数据点,因此,如果我能忽略它的空白,它将起作用。

有什么建议么?

如果您知道想要第四列(例如2003 )中的数据,则忽略空格的公式非常简单。

=INDEX(D:D, AGGREGATE(15, 6, ROW($1:$9999)/((A$1:A$9999="Jan")*SIGN(LEN(D$1:D$9999))), 1))

但是,如果单元格中有2003,并且您必须使用它来确定要检索的列,它将变得更加复杂。

具有倍数的非空白查找

G5中的标准公式¹为

=INDEX($A:$D, AGGREGATE(15, 6, ROW($1:$9999)/(($A$1:$A$9999=G$2)*SIGN(LEN(INDEX($A$1:$D$9999, 0, MATCH($F5,$1:$1, 0))))), 1), MATCH($F5,$1:$1,0))

如果有某些列不可避免地需要检索空白,则可以使用IFERROR函数提供一些错误控制。

您可能还想对从查找匹配行中的每一列查找第一列非空白单元格找到的VBA进行调整, 以合并重复的匹配项以修复和整理数据。

¹AGGREGATE函数是Excel 2010引入的。在早期版本中不可用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM