【问题标题】:MAX + Left Function ExcelMAX + 左函数 Excel
【发布时间】:2017-01-10 13:51:32
【问题描述】:

我正在尝试根据Left 函数获取列的最大值

我正在做的事情如下:

这些是我将其写入 C 列时得到的结果:

=MAX(LEFT(A:A, 2))

但我真正想要的是在 C 列中获取所有 A 列的最大值,而不是每个单元格的最大值。

所以在这种情况下,所有行的结果应该是 90。

这里的公式应该是什么?

【问题讨论】:

    标签: excel function excel-formula


    【解决方案1】:

    只是另一个正常输入的选项:

    =AGGREGATE(14,6,--LEFT($A$1:INDEX(A:A,MATCH("ZZZ",A:A)),2),1)
    

    数组公式将计算整个引用数组。所以应该注意将迭代次数限制在数据集上。

    公式的$A$1:INDEX(A:A,MATCH("ZZZ",A:A)) 部分就是这样做的。它在 A 列中找到最后一个包含数据的单元格,并将其设置为上限。所以在这种情况下,参考范围是 A1:A3。但是,它会随着A列数据的增加而动态增长,所以每次添加数据时都不需要更改公式。

    【讨论】:

    • 没有数组公式的好方法
    • @RobinMackenzie 它是一个数组类型的公式,必须遵守数组公式的限制,但不能使用 Ctrl-Shift-Enter 输入。它类似于 SUMPRODUCT。
    • 是的 - 我的意思是 - 不用 Ctrl+Shift+Enter 的好方法
    【解决方案2】:

    更新 2

    这是另一个我认为比我原来更好的解决方案(下)

    =INT(SUMPRODUCT(MAX(SUBSTITUTE(A:A,"-",".")*1)))
    

    可以正常输入(只需Enter



    原始答案

    你需要数字数组

    =MAX(IFERROR(LEFT(A:A,2)*1,0))
    

    让我们分解一下。将你的字符串乘以 数字 - 因为Left 只返回一个字符串

    LEFT(A:A,2)*1
    

    不幸的是,如果您将空字符串乘以1,此方法将返回#Value。在A:A 范围内肯定会有一些空字符串,所以我们用IFERROR 函数包装整个内容。

    IFERROR(LEFT(A:A,2)*1,0)
    

    现在我们仍然需要 excel 将其视为一个数组(即一整列数字,而不仅仅是一个数字)。所以我们把MAX公式放进去,用Ctrl+Shift+Enter而不是Enter来输入.结果是公式在公式栏中是这样的

    {=MAX(IFERROR(LEFT(A:A,2)*1,0))}
    

    根据需要在您的示例中返回 90


    更新 1

    如果您使用的是 Excel 2013 或更高版本,还可以使用 NUMBERVALUE 函数

    =MAX(NUMBERVALUE(LEFT(A:A,2)))
    

    再次,用 Ctrl+Shift+Enter

    输入

    【讨论】:

    • FWIW,数组类型公式应该限制对数据本身的引用,而不是使用完整的列数组。如果数据集很重要,那么输入的公式很多,它会减慢计算时间。对于输入的每个公式,它将进行超过 100 万次计算。如果这个公式被拖到几百行,那会变成很多。
    • 同意。好建议!
    • 更新了非 CSE 选项
    猜你喜欢
    • 1970-01-01
    • 2015-06-21
    • 2018-01-30
    • 2023-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-26
    相关资源
    最近更新 更多