Excel 是否可以使用公式在跳过选定单元格(中间)上方和下方的数组中查找最大值

Excel 是否可以使用公式在跳过选定单元格(中间)上方和下方的数组中查找最大值,excel,excel-formula,Excel,Excel Formula,如果选定的单元格不固定在特定的单元格中,但可以位于列中的任何位置,那么是否可以使用公式进行此操作 *更新更多详细信息 这不是一次选择,选择过程一直在进行,当我们得到最大值后,数字将是+1并放入选择单元格 然后对下一个选择重复此过程 或者有其他的建议吗 多谢各位 这里有一个使用过滤器的解决方案,我不太喜欢。它使用暴力,看起来不雅。我相信有更好的解决办法 首先,创建帮助器列以对项目进行分组: =IF(A2 = "", "", COUNTIF(A$2:A2, &

如果选定的单元格不固定在特定的单元格中,但可以位于列中的任何位置,那么是否可以使用公式进行此操作

*更新更多详细信息 这不是一次选择,选择过程一直在进行,当我们得到最大值后,数字将是+1并放入选择单元格

然后对下一个选择重复此过程

或者有其他的建议吗

多谢各位


这里有一个使用过滤器的解决方案,我不太喜欢。它使用暴力,看起来不雅。我相信有更好的解决办法

首先,创建帮助器列以对项目进行分组:

=IF(A2 = "", "", COUNTIF(A$2:A2, "") + 1)
将COUNTIF添加到B2:B14。COUNTF周围的IF只是告诉它,如果它位于Ax中没有任何内容的行上,则返回一个空白字符串。我对COUNTIF结果使用+1,因为筛选器不能与0一起使用。%^@!Excel无法区分空单元格和包含0的单元格。这怎么可能呢?是的

现在在C中添加另一个helper列,以获取Ax中任何内容的数字部分:

=NUMBERVALUE(MID(A2, 2, 50))
这将从Ax中获取第一个字符后的所有内容,并将其转换为一个数字。这就是我的懒惰——在Excel中获取数字的最大值比获取字符串要容易得多

因此,现在您将项目分组为B列中的组ID和C2:C14中A2:A14的数字部分。现在我们可以使用过滤器从每个组中获取最大值

MAX(FILTER(C2:C14, B2:B14 = B2)) 
这将返回7。它根据B2的值和B2:B14中的值过滤C2:C14。那很好,但是7不是我们想要的。我们要A07。因此,我们可以用XLOOKUP或另一个查找函数在列A中找到相应的值:

XLOOKUP(MAX(FILTER(C2:C14, B2:B14 = B2)), FILTER(C2:C14, B2:B14 = B2), FILTER(A2:A14, B2:B14 = B2)))
这有点难看。我们使用MAX的第一个过滤器告诉XLOOKUP我们要查找的值。第二个过滤器告诉XLOOKUP我们要在哪里搜索该值:B:B,其中它等于B2中的值。最后一个过滤器告诉XLOOKUP从何处获取返回值,即A列

在每个组的最后一行显示结果更容易,但也可以在组之间的间隙中显示结果。要在列a中显示一组项目的最大值,我们可以在XLOOKUP前面添加以下内容:

IF(OR(B3 = B2, B2 = ""), "", XLOOKUP(MAX(FILTER(C2:C14, B2:B14 = B2)), FILTER(C2:C14, B2:B14 = B2), FILTER(A2:A14, B2:B14 = B2)))
IF将B的当前行值与B的下一行值进行比较,以查看它们是否在同一组中。当它们不在同一组中时,必须是最后一行。我们还可以检查空行,这样就不会在空行中显示结果

您可以使用下面的函数从一组文本项中获取最大值,而不是使用MAX:

LOOKUP(2,1/(COUNTIF(A2:A4,">"& A2:A4)=0), A2:A4)
这不是我的解决办法。它很聪明,效果也很好。在本例中,使用MAX更容易说明


如果您没有访问过滤器的权限,则需要其他一些数组技巧才能使其正常工作。希望您有一个带过滤器的版本。

那么您想选择一个单元格而不考虑它?还是我们需要忽略空白?在我的头顶上,你可以使用一个helper列来计算空白行,这样你就可以定义你想要找到最大值的组。第一组为0,第二组为1,第三组为2=COUNTIFA$1:A100。然后,如果您的Excel版本中有可用的筛选器,则可以简单地对组进行筛选并获得最大值。否则会有点复杂。你能确认你的例子的预期结果是A3单元格的07号吗?@TerryW没错,07是结果。谢谢。@ScottCraner我想选择一个单元格,不考虑它。谢谢。非常感谢您在这方面花时间和帮助,我已经读了两遍,但仍然需要更多的时间来消化信息。我认为这只会达到需要完成的80%,要达到100%,我可能需要使用VBA。因为在我得到我需要的最大值后,我希望Excel自动将最大值+1放入所选单元格中,反复思考无法使用公式找到解决方案。如果A列中的最大值对于组为A07,您希望输出为A08吗?如果是这样,将max函数更改为:LEFTXLOOKUPMAXFILTERC2:C14,B2:B14=B2,FILTERC2:C14,B2:B14=B2,FILTERA2:A14,B2:B14=B2,2&RIGHT0&MAXFILTERC2:C14,B2:B14=B2+1,2。这将从whatever is max字符串中获取左两个字符,然后将末尾的数字增加1。这假设左侧只有两个字母字符,右侧只有一个2位数字。谢谢!如何将结果自动放入所选单元格?例如,如果我选择A5,它会自动将A08放入A5中。我目前正在使用VBA,但一个公式的想法将是伟大的。非常感谢。我把公式放在D列的每一行。它只会显示在每组的最后一行。这样,您就不必担心将其放置在间隙中。如果你想让它在间隙中,你需要稍微修改一下公式。符合 unt表示位于A列而不是D列。并删除公式开头的IF。