我在 Excel 中有一个两列的数据列表。第一列是测试中的问题编号,第二列是引用该问题正在测试的内容的数字。有些要素会在多个问题上进行测试。我想要做的是列出每个元素测试的问题编号。例如:
A B Should return: C D
1 Q Ref Q Ref
2 1 N1 1,3,5 N1
3 2 N4 2 N4
4 3 N1 4 N3
5 4 N3
6 5 N1
我希望使用公式返回此值。
我遇到的问题是返回然后连接一列中未指定数量的值,这些值引用了右侧另一列的特定标准。
编辑:寻找公式答案,如果可能的话而不是VBA
编辑:感谢大家迄今为止的评论。我将查看迄今为止给出的每种可能的解决方案,并让您知道我的想法。 1、2、3 等需要位于同一单元格中。
本质上,Excel 不鼓励在工作表公式中这样做。我猜他们认为,如果您在“用户定义函数”(又名“UDF”)中执行此操作并且它限制了工作簿,那么这是您自己的错,所以就这样吧。为此,我从未见过仅使用本机工作表函数在“边缘不齐”的单元格数组上完成此操作的标准公式或数组公式,并且已经尝试过几次。考虑一下它的设计#REF!
。
您可以运行连续的
IF
函数(按 xl2007+ 标准最多 64 个)来完成字符串拼接(请参阅 this),但您也将受到公式总长度的限制(请参阅
this)。我们还使用“辅助”单元来运行 中的前 7 个 IF TLDR;简而言之,VBA 是最可行的解决方案(请参阅this)。条件字符串连接本身就充满了问题,更不用说在数组循环中了。<=xl2003 then reference that cell in the first IF of another 7 nested IFs (rinse and repeat). 连接函数
此公式将过滤目标列中相对于另一列的所有单元格,并在它们之间使用逗号符号将它们合并。并且无需排序。
对于上面的示例:如果您在单元格 D2 中放入以下内容 =TEXTJOIN(",",TRUE,FILTER(A:A,B:B=E2)) 并向下拖动。