我正在尝试根据Left
函数
我正在做的是以下内容:
这些是我将其写入C列时得到的结果:
=MAX(LEFT(A:A, 2))
但我真正想要的是在C列中获得所有A列的最大值,而不是每个单元格。
因此,对于所有行,结果应该是90.
这里的公式应该是什么?
答案 0 :(得分:5)
正常输入的另一个选项是:
=AGGREGATE(14,6,--LEFT($A$1:INDEX(A:A,MATCH("ZZZ",A:A)),2),1)
数组公式将计算enitre引用的数组。因此,应注意将迭代次数限制为仅数据集。
公式的$A$1:INDEX(A:A,MATCH("ZZZ",A:A))
部分就是这样做的。它在列A中找到包含数据的最后一个单元格,并将其设置为上限。因此在这种情况下,参考范围是A1:A3。但是,它会随着A列中的数据的增加而动态增长,因此无需在每次添加数据时更改公式。
答案 1 :(得分:4)
这是另一个我认为比我原来的更好的解决方案(下面)
=INT(SUMPRODUCT(MAX(SUBSTITUTE(A:A,"-",".")*1)))
可以正常输入(只需输入)
您需要数字和数组
=MAX(IFERROR(LEFT(A:A,2)*1,0))
让我们打破这个。乘以你的字符串为数字 - 因为Left
只返回一个字符串
LEFT(A:A,2)*1
不幸的是,如果将空字符串乘以#Value
,此方法将返回1
。你肯定会在A:A
范围内有一些空字符串,所以我们用IFERROR
函数包装整个事物。
IFERROR(LEFT(A:A,2)*1,0)
现在我们仍然需要excel将其视为一个数组(即一整列数字,而不仅仅是一个数字)。所以我们将MAX
公式放入并输入 Ctrl + Shift + 输入而不是 Enter 大骨节病>。结果是公式栏中的公式如下所示
{=MAX(IFERROR(LEFT(A:A,2)*1,0))}
根据需要在您的示例中返回90
如果您使用的是Excel 2013或更高版本,还可以使用NUMBERVALUE
功能
=MAX(NUMBERVALUE(LEFT(A:A,2)))
再次输入 Ctrl + Shift + Enter