MS EXCEL 2013 - 匹配一列的值并返回下一列的值

MS EXCEL 2013 - 匹配一列的值并返回下一列的值

在 A 列中,我有从 1 到 52 周的数据。在 B 列中有“TRUE”和“FALSE”。我想检查 B 列中的所有 TRUE,并返回 A 列中的所有相应数字。然后,A 列中的值将被发送到其他列,这些列将进一步匹配这些数字,然后计算总数。

目前我正在尝试这个公式: =IF($B$2:$B$54=TRUE,COUNTIFS(tempDailyFeed_23July!$B$2:$B$1048576,"=abc",tempDailyFeed_23July!$BU$2:$BU$1048576,$A$2:$A$54),"")

这里 B2 到 B54 是我的包含 TRUE 和 FALSE 的列,而 A2 到 A54 包含从 1 到 52 的数字。在COUNTIF函数中,我给出了与其他表匹配所需的条件。

答案1

以下是表格的示例20项目。在C1输入TRUE。在C2输入数组公式

=IFERROR(INDEX($A$1:$B$20,SMALL(IF($B$1:$B$20=$C$1,ROW($B$1:$B$20)),ROW(1:1)),1),"")

并抄下来:

在此处输入图片描述

数组公式必须使用 ++Ctrl而不是直接使用键来输入。如果操作正确,公式栏中会出现带有花括号的公式。ShiftEnterEnter

调整公式来匹配您的表格的尺寸。

答案2

如果您实际上想按照我在上面的评论中猜测的那样做,那么这里有一种方法可以做到。

我很难使用 COUNTIFS() 来执行此操作,因为无法在条件中放入逻辑运算符。

无论如何,这里有一个带有已经提到的警告的解决方案:

在此处输入图片描述

C2中的公式是G的学生之前给出的数组公式。

=IFERROR(INDEX($A$2:$A$16,SMALL(IF($B$2:$B$16=TRUE,ROW($A$2:$A$16)-ROW($A$2)+1),ROWS($A$2:$A2))),"")

D 列有一些文本名称来模拟您的范围tempDailyFeed_23July!$B$2:$B$1048576,而 E 列有周数来用周数模拟您的范围。(它不能tempDailyFeed_23July!$B$2:$B$1048576像您在问题中的 IF() 公式中那样)。或者也许我在这里完全搞错了方向。

F2 中的公式是另一个数组公式:

=IFERROR(IF((MATCH(1,1*(E2=C$2:C$7),0))*(D2="abc")>0,1,""),"")

它查找名称为“abc”并且周数为 C 列中的周数之一(B 列为 TRUE 时为 A 列中的周数)的行。

相关内容