【问题标题】:Striving to Add 0 to complete the string number to 3努力加0完成串号到3
【发布时间】:2021-08-18 09:52:38
【问题描述】:

我有要从中转换的数据集。我尝试过自定义格式,但结果不同。

=TEXT(A1,"000")

Data
.3.11.333
.3.3.3.3
11.33.1

到这里

Result
003.011.333
003.003.003.003
011.033.001

【问题讨论】:

  • 我也尝试用 TEXT 函数来做,但不确定它是如何工作的。是的,这些是数值

标签: excel excel-formula formula


【解决方案1】:

查看您的数据,我实际上认为您处理的不是数字,而是包含数字字符的文本。也许您最好的选择是在使用 TEXT() 之前将您的数据“拆分”成一个数组,然后将它们重新组合在一起:

B1中的公式:

=TEXTJOIN(".",,TEXT(FILTERXML("<t><s>"&SUBSTITUTE(A1,".","</s><s>")&"</s></t>","//s[.*0=0]"),"000"))

这里的重点是仅包含数组中实际为数字的元素。我们通过 xpath-expression [.*0=0] 过滤它们,以避免空字符串元素来自前导或尾随点。


编辑:

这可以像这样被简化为 UDF:

Function REFORMAT(str As String) As String

With Application
    REFORMAT = Join(.Text(.Transpose(.FilterXML("<t><s>" & Replace(str, ".", "</s><s>") & "</s></t>", "//s[.*0=0]")), "000"), ".")
End With

End Function

拨打=REFORMAT(A1)

【讨论】:

  • 非常感谢,但我有 Excel 2016,它没有 TextJoin 功能。但是用 Excel 365 来实现会很有用。
  • 那么公式是必须的吗?否则想想 PowerQuery 或 UDF?
  • 你可以使用 Scott Craner 的 TEXTJOIN() UDF
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多