MATCH 和 INDEX 返回索引号 2 Excel
Posted
技术标签:
【中文标题】MATCH 和 INDEX 返回索引号 2 Excel【英文标题】:MATCH and INDEX to return index number 2 Excel 【发布时间】:2020-11-13 11:11:43 【问题描述】:我尝试使用CONCATENATE
、INDEX
和MATCH
函数的组合,以获取哪些员工每天工作哪些职能的概览表。
设置如下:
这应该是结果表:
这是我做的公式:
=CONCATENATE(INDEX($B$5:$B$10,MATCH($B2,C$5:C$10,0)))
并且只获取第一个索引:
如何才能分别返回索引2:name3和name5?
我有2016版之前的Excel版本,无法使用TEXTJOIN
或CONCAT
函数。
编辑
即使 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的主要内容,如果未能解决你的问题,请参考以下文章