根据条件连接值

问题描述 投票:0回答:3

我在 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 excel-formula
3个回答
5
投票

只是为了将我的评论放在答案中,这样更有意义。

首先在 B 列上对 A 列和 B 列进行排序。

在C2中输入公式:

=IF(B2=B3,A2&","&C3,A2)

然后复制下来。

然后在 E 列中放置您的独特参考列表。在 D2 中输入:

=VLOOKUP(E2,$B$2:$C$6,2,FALSE)

然后抄下来。

然后您可以隐藏 C 列。

它确实要求正确排序和辅助列,但它确实遵循仅公式规则。


1
投票

本质上,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).

连接函数

请使用以下公式找出所有具有特定值的单元格


0
投票

此公式将过滤目标列中相对于另一列的所有单元格,并在它们之间使用逗号符号将它们合并。并且无需排序。

对于上面的示例:如果您在单元格 D2 中放入以下内容 =TEXTJOIN(",",TRUE,FILTER(A:A,B:B=E2)) 并向下拖动。

© www.soinside.com 2019 - 2024. All rights reserved.