我有一个如下所示的数据集。 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
答案 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确认。如果正确完成,则会将{}
放在公式周围。
根据您的意见,当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","")
答案 1 :(得分:1)
答案 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