按照另一列的匹配条件查找一列中所有匹配的实例

按照另一列的匹配条件查找一列中所有匹配的实例

编辑:解决方案如下

举个例子会更容易理解。这个想法很简单,至少表面上如此。

通过应用动态查找值,我希望将一列的值与另一列的值进行匹配,并列出各个结果。如果由于查找值的动态范围而导致空间有限,那么在出现多个匹配的情况下,我可以在一个单元格中“求和”输出。

也可以添加所需的行数来适应任何可能的额外匹配,但我还没有找到实现这一目标的公式。

所有列、数据以及查找值都是动态的。

突出问题领域:

问题区域突出显示

我现在有以下公式(拖到下面的单元格):

E 列

{=IF(F7=0,"",IFERROR(INDEX($B:$B,MATCH($F7,$C:$C,0),),0))}

F 栏

{=IFERROR(INDEX($C$1:$C$26,SMALL(IF($C$1:$C$26>0,ROW($C$1:$C$26)),ROW(2:2))),0)}

G 栏

{=IFERROR(IF(E7<>E6,IF(E7<>E8,SUMIF($B$7:$B$26,E7,$D$7:$D$26),IF(COUNTIFS($B$7:$B$26,E7,$D$7:$D$26,">0")>2,SUMIF($B$7:$B$26,E7,$D$7:$D$26),INDEX($D$7:$D$26,MATCH(0,IF($E7=$B$7:$B$26,COUNTIF($J$8:$J9,$D$7:$D$26),""),0)))),IF(COUNTIFS($B$7:$B$26,AQ7,$D$7:$D$26,">0")>2,SUMIF($B$7:$B$26,AQ7,$D$7:$D$26),INDEX($D$7:$D$26,MATCH(0,IF($AQ7=$B$7:$B$26,COUNTIF($AU$5:$AU7,$D$7:$D$26),""),0)))),"")}

编辑:找到可接受的解决方案

因此,我设法通过添加“辅助”列以相当简单的方式实现了我想要的功能。我决定接受预算列仅显示给定日期的所有预算条目的总和。然后,为了添加一个空行以腾出空间用于有预算条目但未进行任何购买的日期(“收据”),而不会干扰日期和收据列的流动动态范围,我参考示例屏幕截图使用了以下设置:

条件:收据条目永远不会与预算条目共享同一行

1)辅助列 #1将 D 列中的每个预算条目替换为可用于查找的唯一值。

2)辅助列 #2每个单元格显示其行号。

3)辅助列 #3将精确匹配的日期复制到 C 列的所有收据值各自的行号上。

4)辅助列 #4与上面的操作相同,不同之处在于所有空白都被预算条目的日期替换。

5)辅助列 #5合并辅助列#3#4只需在列中不存在的空白处添加唯一的预算日期#3

6)期望输出日期列(第一列)由辅助列中的所有空格删除而成#5

7)期望输出收据列(J 列)的形成过程与辅助列相同,以便添加所需的额外行。这可以通过添加另一个辅助列#6用辅助列中的空白单元格替换行中添加的日期#4具有零值。这样,可以区分添加的“零值”单元格和其他空白单元格。通过删除所需输出列 J 中的所有空白单元格,零值将创建额外的所需行,而不会干扰收据条目及其相应的日期。

8)期望输出对于预算列(K 列),现在只需通过在第 I 列中对应日期的每个新实例的第一行添加该值来显示特定日期的所有预算条目的总和。

参见下面的所有公式:

以下所有公式都放在可以复制下来的相应列的第一行。在此示例中,我使用 AA 列作为辅助列 #1,AB 列作为辅助列 #2,依此类推:

辅助列 #1-AA

=如果(d7>0,AB7,“”)

辅助列 #2-AB

=行()

辅助列 #3-交流

=IF(OR(ISBLANK(C7),C7=0),"",INDEX($B:$B,MATCH($C7,$C:$C,0),))

辅助列 #4-广告

=IF(ISBLANK(AA7),"",INDEX($B:$B,MATCH($AA7,$AA:$AA,0),))

辅助列 #5-声发射

=如果(AC7 =“”,如果(COUNTIF($AC:$AC,AA7)=0,AA7“”),AC7)

辅助列 #6-自动对焦

=如果(C7 =“”,如果(COUNTIF($AC:$AC,AA7)=0,0“”),C7)

期望输出列 I

{=IFERROR(INDEX($AE$1:$AE$100,SMALL(IF($AE$1:$AE$100<>"",ROW($AE$1:$AE$100)),ROW(1:1))),0)}

期望输出 J 列

{=IFERROR(INDEX($AF$1:$AF$100,SMALL(IF($AF$1:$AF$100<>"",ROW($AF$1:$AF$100)),ROW(1:1))),0)}

期望输出列 K

=IFERROR(IF(I9<>I8,SUMIF($B$7:$B$100,I9,$D$7:$D$100),""),"")

不确定通过添加 6 个 (!) 附加辅助列是否是最有效的方法,但它确实有效。如果有一个数组公式将所有这些结合起来就太好了,但我不知道这是否可行。欢迎提出任何更好的替代方案的实用建议。

相关内容