MAX +左functionExcel

我正在尝试获取基于Left函数的列的最大值

我正在做的是以下几点:

在这里输入图像说明

这是我写到C列的结果:

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

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

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

这里应该是什么公式?

更新2

这是另一种解决办法,我认为比我原来的(下面)

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

它可以正常input (只需input



Orignal答案

你需要数字数组

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

我们来分解一下。 因为Left只返回一个string

 LEFT(A:A,2)*1 

不幸的是,如果您将空string乘以1则此方法返回#Value 。 你肯定会在范围A:A有一些空的string,所以我们用IFERROR函数来包装整个东西。

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

现在我们仍然需要excel把它当作一个数组(即一列数字,而不是一个数字)。 所以我们把MAX公式放进去,用Ctrl + Shift + Enterinput,而不是Enter 。 结果是公式栏中的公式如下所示

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

在你的例子中将返回90 ,根据需要


更新1

如果您使用的是Excel 2013或更高版本,则还可以使用NUMBERVALUEfunction

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

再次使用Ctrl + Shift + Enterinput

只是正常input的另一个选项:

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

在这里输入图像描述

数组公式将计算引用的数组。 所以应该小心将迭代次数限制在数据集内。

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