Excel -如何基于多列返回行

p8ekf7hl  于 2023-03-13  发布在  其他
关注(0)|答案(2)|浏览(146)

我有一个样本表如下。
我希望基于任何可能的标题组合返回所有为“是”的行。例如,如何返回标题1为“是”且标题2和标题3为“是”的所有行,或者标题5和标题6为“是”的所有行?
enter image description here

368yc8dk

368yc8dk1#

假设我们有下表:
| | A类|B|C级|D级|
| - ------|- ------|- ------|- ------|- ------|
| 1个||H1|氢|H3|
| 第二章|I1|是|是||
| 三个|I2||是|是|
| 四个|I3|是||是|
首先,我们可以让所有列将其自身标记为具有Y或您想要的任何值,如下所示

=IF(B2=$A$1,ROW(B2),"")

其中,$A$1是要与之进行比较的单词的位置,this复制表中的数据并将其放在其他位置,如下所示

然后,您可以将一行包含此公式的单元格连接到当前行值以形成单个结果

=CONCAT(B6:B8)

如果您想在行号之间添加一些分隔符,您可以在第一个答案之后和第二个答案之前添加分隔符。
请注意,每列可以使用一个公式,但这会使编写过程变得繁琐,并且难以扩展。
还要注意的是,如果你想做任何更复杂的事情,你可以研究宏,而不是完全使用Excel,而是使用数据库软件。

wn9m85ua

wn9m85ua2#

  • 根据问题 * 中列出的标记,假设没有Excel版本约束。这里是一个数组版本,输入集为(in),标题的列位置为(cols),用逗号分隔。在I2中输入以下公式:
=LET(in, A2:F10, cols, 1*TEXTSPLIT(G2,,","), set, N(DROP(in,,1)="Yes"),
 cnts, MMULT(CHOOSECOLS(set, cols), SEQUENCE(ROWS(cols),,1,0)),
 f, FILTER(in, cnts=ROWS(cols), "No rows match"), IF(f=0, "", f))

注意:您可以使用BYROW代替MMULT,如下所示。这取决于个人喜好:BYROW(CHOOSECOLS(set, cols), LAMBDA(r, sum(r))) .

并选择单元格G2中的标题列位置。以下是23列的输出(AND条件由以下公式确定:cnts=ROWS(cols)):

正如你所看到的item2item9满足条件,如果输入列返回空集,它返回消息:No rows match .

相关问题