Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 基于单独单元格范围中的条件,对单元格范围使用秩函数_Excel_Excel 2010_Rank - Fatal编程技术网

Excel 基于单独单元格范围中的条件,对单元格范围使用秩函数

Excel 基于单独单元格范围中的条件,对单元格范围使用秩函数,excel,excel-2010,rank,Excel,Excel 2010,Rank,我有一个关于MS Excel 2010中排名函数的问题。我有一个很大的工作表,我想根据列中的值对其行进行排序。这些值可以是正值或负值。我发现了一些有用的建议,解释了如何在列中对值进行排序,同时从排序和排序计数中排除所有等于零的值。它们使用以下公式: IF(O24<0, RANK(O24,$O$24:$O$29) - COUNTIF($O$24:$O$29,0), IF(O24=0, "", RANK(O24,$O$24:$O$29))) IF(O24当您添加要排名的新标准时,当然可以继续

我有一个关于MS Excel 2010中排名函数的问题。我有一个很大的工作表,我想根据列中的值对其行进行排序。这些值可以是正值或负值。我发现了一些有用的建议,解释了如何在列中对值进行排序,同时从排序和排序计数中排除所有等于零的值。它们使用以下公式:

IF(O24<0, RANK(O24,$O$24:$O$29) - COUNTIF($O$24:$O$29,0), IF(O24=0, "", RANK(O24,$O$24:$O$29)))

IF(O24当您添加要排名的新标准时,当然可以继续创建更复杂的公式。但是,通过使用单步公式创建中间列,您将使电子表格更易于理解,也更易于添加新标准或编辑现有公式

我的建议是创建一个不包含零的列(假设它在p列中):
=IF(O24=0,”,O24)

然后在R列中,为了消除负值(这一步是不必要的,但您的原始公式做了类似的事情):
=IF(P24=“”,”,P24-MIN(0,MIN($O$24:$O$29))

现在在S列中,添加您的最新标准:
=IF(或(R24=“”,[在此处输入最新标准]),“”,R24)

最后,列T仅对所选行执行排序:
=IF(S24=“”,”,RANK(S24,S$24:S$29))


如果暴露列p、R和S很麻烦,您可以始终隐藏它们。

您可以使用
COUNTIFS
函数根据另一列中的条件进行排序,例如,第24行中的公式向下复制[编辑以包含额外的If)

=IF(O24=0,”,IF(N24=“x”,COUNTIFS(O$24:O$29,”>,&O24:O$29,“0”,N$24:N$29,“x”)+1“)

这将从高到低排列,其中列N=“x”,忽略零值


请参见N列和O列包含随机值-按F9重新生成新的随机值,Q列中的公式结果将相应更改

使用表格格式重新编写barry houdini的答案。 Value\u Col是包含要排序的值的列。Group\u column是包含要在组中排序的Group by值的列


=COUNTIFS([Value\u Col]、“>”和[@[Value]]、[Value\u Column]、“0”、[Group\u Column]、@[Group]])+1

谢谢,这看起来很有趣,但我还不能让它工作。假设我不想排除零值,但只根据第N行进行排序。如果第N行中的对应值大于10,我只想对第O行中的值进行排序。那么我将如何更新您的公式?抱歉,这与编写的公式不太一样(您需要额外的if)请尝试此版本以获取您的建议
=IF(N24>10,COUNTIFS(O$24:O$29,“>”&O24,N$24:N$29,“>10”)+1,”
耶,太酷了!它现在可以工作了,因为它返回一个“1”对于第O行中每一个在第N行中包含大于10的值的值。但是我现在如何根据这些剩余单元格在第O行中的值对其进行排序?您是否准确地使用了该公式?(我需要编辑)它不应该为每一行返回1,它应该对值进行排序(COUNTIFS有效地进行排序),我将尝试附加一个示例……啊,不,我忘记包含第二个“>10”.我很抱歉,谢谢你,我想现在它工作得很好!!!谢谢你!如果可能的话,我宁愿把整个公式放在一行。有没有办法把你的公式合并成一行,这样我就可以在我的Excel表格上试一下?我的回答是,把所有这些公式合并到一个单元格是一个糟糕的主意。你最好还是分开将每个部分合并到自己的公式中。这有助于维护性、理解性,并简化将来的编辑。