Excel 从多个匹配行返回值

Excel 从多个匹配行返回值,excel,Excel,首先,如果可能的话,我想在没有VB的情况下完成这项工作,这样我就不必费心教接收者如何启用宏了 现在,我相信我想做的很简单,但答案可能很复杂。我试图在新的列中列出指定列中的值,这些行具有其他两列中的匹配值。我相信这听起来很棘手,但举个例子应该会非常有帮助 假设我有以下数据: ------------------ | sts | pos | bye | ------------------ | 0 | QB | 8 | | 2 | WR | 3 | | 2 | QB

首先,如果可能的话,我想在没有VB的情况下完成这项工作,这样我就不必费心教接收者如何启用宏了

现在,我相信我想做的很简单,但答案可能很复杂。我试图在新的列中列出指定列中的值,这些行具有其他两列中的匹配值。我相信这听起来很棘手,但举个例子应该会非常有帮助

假设我有以下数据:

 ------------------
| sts | pos  | bye |
 ------------------
| 0   | QB   | 8   |
| 2   | WR   | 3   |
| 2   | QB   | 10  |
| 0   | QB   | 4   |
| 2   | QB   | 7   |
| 0   | WR   | 11  |
| 2   | WR   | 9   |
| 2   | QB   | 5   |
 ------------------
那是我的消息来源。我想从所有具有
sts=2
的行中列出每个
pos
bye
值。换句话说,从上面的源数据中,我希望看到以下结果集:

 --------------------------
| pos | byes               |
 --------------------------
| QB  | 10  | 7  | 5  |    |
| WR  | 3   | 9  |    |    |
 --------------------------
…因为这些是行中的
bye
值,
sts=2
pos
等于结果表中相应的
pos

同样,如果可能的话,我希望避免使用宏,只需在results表的
bye
单元格中使用公式即可

希望这对你有足够的意义去尝试一下。谢谢

后续行动: @Richard Morgan我试图使用你的公式,但无法使其起作用。这是我实际电子表格的屏幕截图,因此我们可以使用真实的单元格引用:


所以
sts
B2:B303
pos
D2:D303
bye
E2:E303
。然后我想在
U
Y
列中列出是。看起来你的答案,如果我足够聪明去实现它,将得到我所需要的,所以你能提供任何帮助让我到达终点线,我将不胜感激

可以使用以下内容:

{=INDEX(tbl, SMALL(IF(COUNTIF(G$3, $A$2:$A$9)
 *COUNTIF(G$4, $B$2:$B$9), ROW(tbl)-MIN(ROW(tbl))+1), ROW($C1)), COLUMN($C1))}
其中A列为sts,B列为pos,C列为bye。变量tbl是数据范围(而不是标题)。G$3是sts过滤器,G$4是pos过滤器

向下复制数组公式,找到所有匹配的“是”#号码!将在找不到更多匹配项后显示。如果这让您的用户感到不安,您可以添加一个iError或一个复杂的条件格式,使文本变白

然后可以将公式复制到下一列,并输入新的筛选值

            G   H
sts Search  2   2
pos Search  QB  WR

            10  3
            7   9
            5   #NUM!
            #NUM!#NUM!
我认为,如果您的用户对pivot表感到满意,那么使用它们就会容易得多

编辑 使公式“转置”是有点棘手,我没有任何突破如何解决这一问题。但是,如果要手动编辑列公式,请执行以下操作

(我假设S是sts过滤器。可能您只是在那里进行计数,但我没有看到您在哪里输入sts过滤器。如果S不是sts过滤器,请更新公式以指向sts为2或其他位置。)

U2:

V2:

等等

这样可以向下复制单元格

我确信有一种方法可以间接显示行/列,但我现在没有时间来查看这一点

编辑2 如果你把一个简单的数字增量放在某个地方,比如说U1有1,V1有2,W1有3,等等,你可以使用以下公式:

{=INDEX(tbl, SMALL(IF(COUNTIF($S2, $B$2:$B$9)*COUNTIF($R2, $D$2:$D$9), 
ROW(tbl)-MIN(ROW(tbl))+1), U$1), COLUMN($D$1))}

这将向下和横向复制。

这听起来像是数据透视表的工作,然后转到“特殊”。不过,您需要添加一个ID列。以下是一种方法:

然后,使用go to special选择空格后,只需删除它们并将单元格向左移动即可。


祝你好运。

好的,我想出了一个方法来获得我想要的结果。这不是最干净或最好的方法,但它实现了我水平列出结果的目标,并且避免了宏或透视表

我使用一个隐藏的工作表列出所有的
pos
sts
值,作为单个值连接在一起。所以

sts   | pos   | bye
----------------------
2     | QB    | 8
2     | RB    | 5
2     | QB    | 11
0     | WR    | 7
. . .
……变成

     D   | E
    -----------
5  | 2QB | 8
6  | 2RB | 5
7  | 2QB | 11
8  | 0WR | 7
     . . .
然后,我有一个“阴影”结果区域,它模仿我头版工作表上的结果区域。看起来是这样的:

     G   | H   | I   | J   | K
    -----------------------------
5  | QB  |     |     |     |     |
6  | RB  |     |     |     |     |
7  | WR  |     |     |     |     | . . .
在H5:H7中,我有以下公式:

=IFERROR((ADDRESS(MATCH("2"&$G5,$D$5:$D$305,0)+4,COLUMN($E5),4)),"")
这将返回它在连接列中找到的第一个单元格引用,该引用以2开始,以G列中的值结束(例如,第5行中的公式正在查找“2QB”

然后,在I5:n7中,我有以下修改公式:

=IFERROR(ADDRESS(MATCH("2"&$G5,INDIRECT(ADDRESS(ROW(INDIRECT(H5))+1,4)&":$d$"&MAX(305,ROW(INDIRECT(H5))+1)),0)+ROW(INDIRECT(H5)),COLUMN($E5),4),"")
我修改后续列的原因是更改公式查找其值的范围,使其从先前找到的值之后的下一行开始。例如,对于上面的数据,H5中的公式将在D5:D*n*中查找“2QB”,并返回它找到的第一行并将其附加到列E,即E5

然后,I5中的公式将查找从D*6*开始的“2QB”,而不是在H5结果中引用的行之后的D5

希望这是有道理的

因此,我在隐藏工作表中得到的结果是:

     G   | H   | I   | J   | K
    -----------------------------
5  | QB  | E5  | E7  |     |     |
6  | RB  | E6  |     |     |     |
7  | WR  |     |     |     |     | . . .
然后,在我的首页工作表上,我只需使用以下方法获取H5:*n*7中单元格引用的值(bye):

=IFERROR(INDIRECT(lookups!H5),"")
…这给了我最后的结果:

     G   | H   | I   | J   | K
    -----------------------------
5  | QB  | 8   | 11  |     |     |
6  | RB  | 5   |     |     |     |
7  | WR  |     |     |     |     | . . .

正如我所说,它完全令人费解,但它是有效的,如果我找到了方法,我随时可以改进它。:)感谢你在这个看似复杂的问题上给了我很大的帮助!我相信你的答案也很好。

我先做了同样的事情!根本没有花时间设置和使用。是的,我只是想我会把它扔出去,因为这是我个人最简单的方法。我们会看看他是否喜欢公式答案(像你的答案一样)-他在问题中似乎这样做了。我想你也不能使用数据透视表?我选择不使用数据透视表是因为外观对这一点很重要,而且更容易定制,而不需要数据透视表的开销(至少在我的经验中)。谢谢!请参阅我的
后续
对上述问题的编辑,希望我能让您的解决方案发挥作用!好啊
=IFERROR(INDIRECT(lookups!H5),"")
     G   | H   | I   | J   | K
    -----------------------------
5  | QB  | 8   | 11  |     |     |
6  | RB  | 5   |     |     |     |
7  | WR  |     |     |     |     | . . .