使用Index(match(max(countifs,它在第一个答案后返回错误的值

时间:2019-07-23 14:32:29

标签: excel excel-formula

我正在编写一个公式来浏览数据表,并根据输入到公式中的数据查找具有最大计数的电子邮件地址。我已经写出了它并且可以正常工作,但是在第一个答案之后,即使空白单元格,它也始终返回相同的错误答案,这使人认为这是一个错误。我已经使用 ctrl + shift + enter 使它作为数组运行。

screen grab with the formula and results sample of full data list showing columns

当我将代码向下拖动到下面的行时,我已经浏览了一下代码,并且确认它在公式中寻找正确的输入单元格。有些电子邮件可能具有两个或两个以上的最大值,最大值为3。我稍后会过桥,但就目前而言,我知道具有确定的最大值的输入也无法正确输出。

  

= INDEX('[加载列表参考.xlsx] Sheet1'!$ D $ 1:$ D $ 7454,MATCH(MAX(COUNTIFS('[加载列表   Reference.xlsx] Sheet1'!$ D $ 1:$ D $ 7454,'[加载列表   Reference.xlsx] Sheet1'!$ D $ 1:$ D $ 7454,'[加载列表   Reference.xlsx] Sheet1'!$ G $ 1:$ G $ 7454,E3,'[加载列表   Reference.xlsx] Sheet1'!$ I $ 1:$ I $ 7454,G3)),COUNTIFS('[加载列表   Reference.xlsx] Sheet1'!$ D $ 1:$ D $ 7454,'[加载列表   Reference.xlsx] Sheet1'!$ D $ 1:$ D $ 7454,'[加载列表   Reference.xlsx] Sheet1'!$ G $ 1:$ G $ 7454,E3,'[加载列表   Reference.xlsx] Sheet1'!$ I $ 1:$ I $ 7454,G3)))

我需要它返回与其在数据中出现的最大次数相关的正确电子邮件地址。它在第一行中正确显示,但是在那之后它输出列表中的最后一个电子邮件地址。如果搜索列中甚至没有任何数据,它仍将输出该电子邮件地址。

1 个答案:

答案 0 :(得分:0)

为简单起见,以下示例在同一张纸上包含数据和结果。您需要相应地更改范围。假设您在A1:I15 ...

中进行了以下设置

A1:I15

输入以下公式...

G2,通过CONTROL + SHIFT + ENTER确认...

=MAX(FREQUENCY(IF($B$2:$B$15="y",IF($C$2:$C$15="z",IF($A$2:$A$15<>"",MATCH($A$2:$A$15,$A$2:$A$15,0)))),ROW($A$2:$A$15)-ROW($A$2)+1))

H2,通过CONTROL + SHIFT + ENTER确认...

=SUM(IF(FREQUENCY(IF($B$2:$B$15="y",IF($C$2:$C$15="z",IF($A$2:$A$15<>"",MATCH($A$2:$A$15,$A$2:$A$15,0)))),ROW($A$2:$A$15)-ROW($A$2)+1)=G2,1))

I2,通过CONTROL + SHIFT + ENTER确认,并向下复制...

=IF(ROWS(I$2:I2)<=$H$2,INDEX($A$2:$A$15,SMALL(IF(FREQUENCY(IF($B$2:$B$15="y",IF($C$2:$C$15="z",IF($A$2:$A$15<>"",MATCH($A$2:$A$15,$A$2:$A$15,0)))),ROW($A$2:$A$15)-ROW($A$2)+1)=$G$2,ROW($A$2:$A$15)-ROW($A$2)+1),ROWS(I$2:I2))),"")

这是结果...

Results