MATCH 和 INDEX 返回索引号 2 Excel

Posted

技术标签:

【中文标题】MATCH 和 INDEX 返回索引号 2 Excel【英文标题】:MATCH and INDEX to return index number 2 Excel 【发布时间】:2020-11-13 11:11:43 【问题描述】:

我尝试使用CONCATENATEINDEXMATCH 函数的组合,以获取哪些员工每天工作哪些职能的概览表。

设置如下:

这应该是结果表:

这是我做的公式:

=CONCATENATE(INDEX($B$5:$B$10,MATCH($B2,C$5:C$10,0)))

并且只获取第一个索引:

如何才能分别返回索引2:name3和name5?

我有2016版之前的Excel版本,无法使用TEXTJOINCONCAT函数。

编辑

即使 VBA 解决方案也能正常工作,我也试图让公式工作:

这就是我要工作的内容:

=IF(COUNTIF(C$5:C$10,$B2)=0,"",IF(COUNTIF(C$5:C$10,$B2)=1;INDEX($B$5:$B$10,MATCH($B2,C$5:C$10;0)),INDEX($B$5:$B$10,MATCH($B2,C$5:C$10,0))&CHAR(10)&INDEX($B$5:$B$10,SMALL(MATCH($B2,C$5:C$10),ROWS(C$5)))))

在这种情况下它给出了正确的解决方案(假设最多有 2 个匹配项),但是它很脆弱。

我在一个更大的设置中对其进行了测试,它两次返回相同的名称,但我无法弄清楚问题是什么。

知道吗,为什么会这样?

【问题讨论】:

VBA 解决方案怎么样? @Andreas 我肯定更喜欢一个公式来处理它。然而,在缺乏更好的替代方案的情况下,它可能是一个足够的解决方案。我没有尝试过使用 VBA,也没有研究过这个方向的可能性。 有时 SO 就是这样工作的。遗憾的是,大多数时候他们无法提供可能有用的反馈。 我真的很想知道。所以我可以改进我的问题。 感谢您的有用帮助 Andreas,周末愉快 :) 【参考方案1】:

一点都不漂亮。但它确实有效。

用户定义函数。 将此代码放在一个模块中

Function name_find(func As String, namerng As Range, searchrng As Range)
    
    For Each r In searchrng
        If r.Value = func Then
            name_find = name_find & Chr(10) & Cells(r.Row, namerng.Column).Value
        End If
    Next r

End Function

并使用公式:

=name_find(C4,C9:C14,D9:D14)

记得在单元格中启用换行符。我花了一段时间才明白为什么它不起作用:-)

【讨论】:

以上是关于MATCH 和 INDEX 返回索引号 2 Excel的主要内容,如果未能解决你的问题,请参考以下文章

INDEX MATCH 根据日期范围和名称标准返回多个结果

与通配符和多个条件的索引匹配

index函数

Index Beyond Bounds / EXC_BAD_ACCESS 核心数据删除 SwiftUI

查询好搭档:INDEX+MATCH 函数

使用 INDEX 和 MATCH 返回多个值而不使用 VBA