我正在尝试对列表中也有#N / A的数字进行排名。我已经看到了使用countif的建议,但这种方法并没有那么富有成效。一种想法是因为列表中的数字/值是使用公式生成的(在这种情况下是索引和iferror公式),Excel无法将输出识别为可以排序的数值。我试图将格式更改为数字,但到目前为止还没有奏效。以下是用于生成需要排名的数字的公式:
={IFERROR(INDEX($BT$12:$BT$272,$BV13,COLUMNS($BW$12:BW13)),#N/A)}
输出范围在1950-2015的任何地方,包括一堆#N / A.关于如何对这些数字进行排名的任何想法?
答案 0 :(得分:1)
两个建议:
更改生成数字的公式,如下所示:
={IFERROR(INDEX($BT$12:$BT$272,$BV13,COLUMNS($BW$12:BW13)),"")}
空白(""
)不会导致与#N/A
排名相同的问题。
如果您在列中继续使用#N/A
非常重要,请创建一个帮助列,其中包含原始列的结果,但将#N/A
替换为空白。假设您的#N/A
值列为BX
,则可以通过将以下公式复制到BY
列来实现:
=IFERROR(BX12,"")
然后,您将应用RANK
公式来查看BY
而不是BX
。
答案 1 :(得分:1)
较新的AGGREGATE¹ function旨在忽略单元格中的错误(选项 6 ),并且具有可用于LARGE和SMALL的子函数递增或递减伪 - RANK函数。
作为BU12中的数组公式²:BV12,
'ranked in ascending order
=IFERROR(MATCH(BT12, AGGREGATE(15, 6, BT$12:BT$272, ROW(INDIRECT("1:"&COUNT(BT$12:BT$272)))), 0), "")
'ranked in descending order
=IFERROR(MATCH(BT12, AGGREGATE(14, 6, BT$12:BT$272, ROW(INDIRECT("1:"&COUNT(BT$12:BT$272)))), 0), "")
IFERROR包装器可以避免显示因尝试直接排名#N/A
而产生的任何错误。
¹ Excel 2010引入了AGGREGATE function。早期版本不提供。
²数组公式需要使用 Ctrl + Shift + Enter↵完成。如果输入正确,Excel将公式包装在大括号中(例如 {和} )。您不要自己键入大括号。一旦正确进入第一个单元格,就可以像任何其他公式一样向下或向右填充或复制它们。尝试并减少对更接近表示实际数据范围的范围的全列引用。数组公式以对数方式计算计算周期,因此将参考范围缩小到最小值是一种好习惯。有关详细信息,请参阅Guidelines and examples of array formulas。
答案 2 :(得分:0)
excel无法对我的列表进行排名的原因是因为输出不是数字。这是一个解决方法:
={IFERROR(INDEX($BT$12:$BT$272,$BV13,COLUMNS($BW$12:BW13))+0,"")}
如果添加ZERO,则会将输出转换为数字。现在您可以最终对输出进行排名。简单的解决方案但有效感谢所有插话的人 - 大声思考肯定有帮助!
答案 3 :(得分:0)
试试这个,将错误结果更改为极端:
=IFERROR(INDEX($BT$12:$BT$272,$BV13,COLUMNS($BW$12:BW13)),99999)
或者取决于方向可以为零。然后,您可以应用自定义格式:
[<>99999]0;"#N/A"
这会将#N/A
用于错误,但会在背景中保留一个数字。
然后你的等级公式:
=IF(A1=99999,"",RANK(A1,$A$1:$A$100))
显然更改引用以匹配您的引用。