regex 确定具有最多十进制值的值

dl5txlt9  于 2022-12-30  发布在  其他
关注(0)|答案(2)|浏览(114)

我有一个值范围,我想计算范围内所有值的小数点,并显示最大计数。公式应排除末尾的零(不计算小数点末尾的零)。

例如,在上面的示例中,在整个范围内,小数位数的最大值是4(不包括末尾的零),因此,答案是4,将显示在单元格D2
我试着做正则表达式,但不知道我如何做它的整个范围的值。
救命啊!

siotufzp

siotufzp1#

尝试:

=INDEX(MAX(LEN(IFERROR(REGEXEXTRACT(TO_TEXT(A2:C4), "(\..+)")*1))-2))

8nuwlpux

8nuwlpux2#

Player0's solution是一个很好的开始,但是使用的TO_TEXT似乎依赖于单元格的格式。如果您想安全地计算小数位数,请改用TEXT函数。

TEXT(number, format)需要一个指定小数位数最大值的格式。这是没有办法的,因为像=1/3这样的公式可以有无限多个小数位。
因此,首先确定您的用例的最大精度(这里我们使用8),然后使用下面的函数,该函数独立于文档的格式和语言:

=INDEX(MAX(
  LEN(REGEXEXTRACT(
    TEXT(ABS(A2:C4); "."&REPT("#";8));
    "[,.].*$"
  ))-1
))

我们减去-1,因为LEN(REGEXEXTRACT())也计算十进制分隔符(.用于英语,,用于许多其他语言)。
小数点后第8位之后的所有内容都将被忽略。如果所有数字都类似于123.00000000987,则计算出的max.为0。如果您更喜欢8,则添加ROUNDUP( ; 8)

=INDEX(MAX(
  LEN(REGEXEXTRACT(
    TEXT(ROUNDUP(ABS(A2:C4);8); "."&REPT("#";8));
    "[,.].*$"
  ))-1
))

相关问题