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或更高版本,则还可以使用NUMBERVALUE
function
=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增长,因此每次添加数据时都不需要更改公式。