我有一个值范围,我想计算范围内所有值的小数点,并显示最大计数。公式应排除末尾的零(不计算小数点末尾的零)。
例如,在上面的示例中,在整个范围内,小数位数的最大值是4(不包括末尾的零),因此,答案是4,将显示在单元格D2中我试着做正则表达式,但不知道我如何做它的整个范围的值。救命啊!
D2
siotufzp1#
尝试:
=INDEX(MAX(LEN(IFERROR(REGEXEXTRACT(TO_TEXT(A2:C4), "(\..+)")*1))-2))
8nuwlpux2#
Player0's solution是一个很好的开始,但是使用的TO_TEXT似乎依赖于单元格的格式。如果您想安全地计算小数位数,请改用TEXT函数。
TO_TEXT
TEXT
TEXT(number, format)需要一个指定小数位数最大值的格式。这是没有办法的,因为像=1/3这样的公式可以有无限多个小数位。因此,首先确定您的用例的最大精度(这里我们使用8),然后使用下面的函数,该函数独立于文档的格式和语言:
TEXT(number, format)
=1/3
=INDEX(MAX( LEN(REGEXEXTRACT( TEXT(ABS(A2:C4); "."&REPT("#";8)); "[,.].*$" ))-1 ))
我们减去-1,因为LEN(REGEXEXTRACT())也计算十进制分隔符(.用于英语,,用于许多其他语言)。小数点后第8位之后的所有内容都将被忽略。如果所有数字都类似于123.00000000987,则计算出的max.为0。如果您更喜欢8,则添加ROUNDUP( ; 8):
-1
LEN(REGEXEXTRACT())
.
,
123.00000000987
ROUNDUP( ; 8)
=INDEX(MAX( LEN(REGEXEXTRACT( TEXT(ROUNDUP(ABS(A2:C4);8); "."&REPT("#";8)); "[,.].*$" ))-1 ))
2条答案
按热度按时间siotufzp1#
尝试:
8nuwlpux2#
Player0's solution是一个很好的开始,但是使用的
TO_TEXT
似乎依赖于单元格的格式。如果您想安全地计算小数位数,请改用TEXT
函数。TEXT(number, format)
需要一个指定小数位数最大值的格式。这是没有办法的,因为像=1/3
这样的公式可以有无限多个小数位。因此,首先确定您的用例的最大精度(这里我们使用8),然后使用下面的函数,该函数独立于文档的格式和语言:
我们减去
-1
,因为LEN(REGEXEXTRACT())
也计算十进制分隔符(.
用于英语,,
用于许多其他语言)。小数点后第8位之后的所有内容都将被忽略。如果所有数字都类似于
123.00000000987
,则计算出的max.为0。如果您更喜欢8,则添加ROUNDUP( ; 8)
: