Excel-数组上的索引匹配未返回正确答案

时间:2018-10-15 20:16:37

标签: excel excel-formula

我有一张按州,年份和统计类型(有4种统计类型)分类的劳动力统计表(“州劳动力”)。请参见下面的屏幕截图:

Lookup table

然后,我有了第二张表,允许用户输入这3个搜索参数中的每个参数,并使其返回值(例如,从上面的屏幕截图中,阿拉巴马州的2000年劳动力等于2133233)。但是,由于某种原因,索引匹配始终返回0。

=INDEX('State Labor Force'!$D:$D,
MATCH($H$79&$G80&$B$78,
'State Labor Force'!$A:$A&'State Labor Force'!$B:$B&'State Labor Force'!$C:$C,0))

(其中H79 =状态输入,G80 =年输入,B78 =统计输入;所​​有3个都与列表验证相关,并且没有拼写错误)。

>

有人知道为什么这个公式不起作用吗?

2 个答案:

答案 0 :(得分:2)

您的公式应如下所示(Ctrl + Shift + Enter,使其成为数组公式):

{=INDEX('State Labor Force'!$D:$D,
MATCH(1,($H$79='State Labor Force'!$A:$A)*($G80='State Labor Force'!$B:$B)*($B$78='State Labor Force'!$C:$C),0))}

具有多个条件的索引+匹配公式的概念如下:

{=INDEX(Result Range,MATCH(1,(A1=range1)*(B2=range2)*(C3=range3),0))}

位置:

Result Range =您要返回最终结果的范围

Range1 =条件1的范围,您可以在A1中定义条件1

Range2 =条件2的范围,您可以在B2中定义条件2

Range3 =条件3的范围,您可以在C3中定义条件3

0 =要返回的完全匹配

答案 1 :(得分:1)

  1. 该构造必须作为一个数组公式**
  2. 您缺少一个FALSE(或等效的{{1} })0 match_type 参数

因此:

MATCH

但是,通过引用这种构造中的整个列,您将强制Excel为单个公式计算惊人数量的单元格(超过300万个)。

最好是在工作表的另一列中执行级联,之后可以使用非数组=INDEX('State Labor Force'!$D:$D,MATCH($H$79&$G80&$B$78,'State Labor Force'!$A:$A&'State Labor Force'!$B:$B&'State Labor Force'!$C:$C,0)) / INDEX构造,这将大大加快计算速度。例如,为此目的使用州劳动力标签的E列,我们将在MATCH中输入:

E2

之后,您可以简单地使用:

=A2&B2&C2

致谢

**输入数组公式的方式与使用“标准”公式的方式不同。首先按住CTRL和SHIFT,然后再按Enter,而不是仅按ENTER。如果操作正确,您会注意到Excel在公式周围放置了大括号{}(尽管不要尝试自己手动插入大括号)。