【发布时间】: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,周末愉快 :)
标签: excel vba excel-formula match user-defined-functions