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

Excel-数组上的索引匹配未返回正确答案,excel,excel-formula,Excel,Excel Formula,我有一个劳动力统计表(“州劳动力”),按州、年和统计类型(共有4种统计类型)细分。请参见下面的屏幕截图: 然后,我有第二个表,允许用户输入这3个搜索参数中的每一个,并让它返回值(例如,从上面的屏幕截图,阿拉巴马州2000年的劳动力将等于213323)。但是,由于某些原因,索引匹配会一直返回0 =INDEX('State Labor Force'!$D:$D, MATCH($H$79&$G80&$B$78, 'State Labor Force'!$A:$A&'State

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

然后,我有第二个表,允许用户输入这3个搜索参数中的每一个,并让它返回值(例如,从上面的屏幕截图,阿拉巴马州2000年的劳动力将等于213323)。但是,由于某些原因,索引匹配会一直返回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
=统计输入;所有三个都与列表验证相关联,没有拼写错误)


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

您的公式应该是这样的(Ctrl+Shift+Enter,用于将其转换为数组公式):

具有多个标准的索引+匹配公式背后的思想如下:

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

结果范围
=要返回最终结果的范围

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

Range2
=条件2的范围,其中您在B2中定义了条件2

Range3
=标准3的范围,其中您在C3中定义了标准3

0
=精确匹配以返回需要作为数组公式提交的构造**
  • 对于
    match
    的匹配类型参数,您缺少一个
    FALSE
    (或者相当于
    0
  • 因此:

    =索引('State Labor Force'!$D:$D,匹配($H$79和$G80和$B$78,'State Labor'!$A:$A和'State Labor'!$B:$B和'State Labor'!$C:$C,0))

    然而,通过引用这样一个结构中的整列,您正在迫使Excel为单个公式计算惊人数量的单元格(超过300万个)

    更好的做法是在工作表中的一个附加列中执行连接,然后可以使用非数组
    索引
    /
    匹配
    构造,这将大大加快计算速度。例如,为此使用“州劳动力”选项卡的E列,我们将在
    E2
    中输入:

    =A2&B2&C2

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

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

    问候


    **数组公式的输入方式与“标准”公式不同。不要只按ENTER键,而是先按住CTRL和SHIFT键,然后再按ENTER键。如果您做得正确,您会注意到Excel在公式周围放了一个大括号{}(不过不要尝试自己手动插入这些括号)。

    定义“公式不起作用”。您希望特定输入的结果是什么?结果究竟如何?我的猜测(仅基于问题的典型情况)是,您试图在
    MATCH
    中查找的值在您试图查找的列表中的任何位置都不存在。也可能是您需要以数组公式的形式输入。Ctrl+Shift+enter表示数组公式。Ctrl+Enter不是数组公式。但除此之外,我同意你的回答+你说得对,错过了我的“班次”和糟糕的英语部分:P。谢谢:)!另外,值得一提的是:如果可能,将数组相乘时,应尽可能避免全列引用(例如
    A:A
    )。只有当您使用
    IF
    函数时,才可以使用完整列引用而不产生性能损失,例如
    COUNTIF
    SUMIF
    AVERAGEIF
    等。如果可能,
    $a:$a
    应减少到
    $a$1:$100
    ,例如,Excel可能对我有点厌倦,因为我重新启动了程序,它似乎终于开始工作了。我改用了你的“*”公式,而不是我一直在用的“&”,现在它似乎起作用了。谢谢没问题,帮你很有趣:)!我的excel也对我感到厌倦,啊哈;)。很高兴它解决了你的问题!。为了记录在案,我在Excel中使用了一个数组公式。我只是为了原帖的目的重写了公式,没有包括括号。无论如何,感谢您对我问题的回答。
    {=INDEX(Result Range,MATCH(1,(A1=range1)*(B2=range2)*(C3=range3),0))}