Excel - 仅选择一个最大值

时间:2016-04-25 16:58:37

标签: arrays excel if-statement max lookup

我有一个如下所示的数据集。 E列将是我的公式列。我希望E栏能够阅读" Max"对于ID包含该状态的最大概率的行。如果同一个州的两个ID具有相同的概率,就像马里兰州一样,我想要" Max"显示最近日期的ID。如果两个ID在概率和日期都匹配,那么我想要" Max"在每组国家中只出现一个ID。

    Column A       Column B     Column C    Column D    Column E
    State        Probability       Date        ID       Formula Field
    California        10%       12/31/2016    123   
    California        20%       1/7/2017      129   
    California        23%       1/14/2017     135       Max
    Colorado          26%       1/21/2017     141   
    Colorado          38%       12/31/2016    147       Max
    Illinois          44%       1/14/2017     153       Max
    Illinois          44%       1/14/2017     159   
    Illinois          20%       1/21/2017     165   
    Illinois          35%       1/28/2017     171   
    Maryland          41%       2/4/2017      177   
    Maryland          41%       12/31/2016    183       Max
    Maryland          35%       1/7/2017      189   
    Michigan          20%       1/14/2017     195   
    Michigan          35%       1/21/2017     201   
    Michigan          38%       1/28/2017     207       Max
    West Virginia     41%       2/4/2017      213   
    West Virginia     44%       2/11/2017     219       Max

3 个答案:

答案 0 :(得分:3)

以下是新公式:

=IF(D2=MIN(IF((ABS($C$2:$C$18-$H$1)=MIN(IF(($A$2:$A$18=A2)*($B$2:$B$18=MAX(IF(($A$2:$A$18=A2),$B$2:$B$18))),ABS($C$2:$C$18-$H$1))))*($A$2:$A$18=A2),$D$2:$D$18)),"Max","")

这是一个数组公式。作为数组,必须使用Ctrl-Shift-Enter确认。如果正确完成,则会将{}放在公式周围。

enter image description here

根据您的意见,当ID为文本时,以下公式将起作用。

要获得标准匹配的第一行,当存在重复时:

=IF(ROW(D2)=MIN(IF((ABS($C$2:$C$18-$H$1)=MIN(IF(($A$2:$A$18=A2)*($B$2:$B$18=MAX(IF(($A$2:$A$18=A2),$B$2:$B$18))),ABS($C$2:$C$18-$H$1))))*($A$2:$A$18=A2),ROW($D$2:$D$18))),"Max","")

当存在平局时,将“Max”放入两者:

=IF((ABS(C2-$H$1)=MIN(IF(($A$2:$A$18=A2)*($B$2:$B$18=MAX(IF(($A$2:$A$18=A2),$B$2:$B$18))),ABS($C$2:$C$18-$H$1))))*($A$2:$A$18=$A$2:$A$18),"Max","")

enter image description here

答案 1 :(得分:1)

使用我previous answer中使用的COUNTIFS方法,

Trigger parameterized build on other projects

enter image description here

答案 2 :(得分:0)

这可能有所帮助,但有点麻烦。函数的返回显然不能为空,因此在所有其他行中将返回0。但是如果使用此功能,则必须为每个组选择相同的范围。 ** 此外,该函数必须位于其旁边的列中,或者您必须在偏移量中编辑您希望查看的列数。

Link to Excel sheet screenshot

Function FindMaxByState(rng As Range)
Dim cell As Range
Dim value As Double

value = 0

For Each cell In rng
If IsNumeric(cell.value) Then
    If cell.value > value Then
        value = cell.value
    End If   
End If

Next cell

If ActiveCell.Offset(0, -1).value = value Then
    FindMaxByState = "Max"
Else
    FindMaxByState = 0
End If

End Function