【问题标题】:Excel formula, add leading 0 after the dash (-) but before the numbersExcel 公式,在破折号 (-) 之后但数字之前添加前导 0
【发布时间】:2020-02-19 02:36:19
【问题描述】:

我的数据看起来像:D-8、FE-09、I-18、P-1 在一个范围内。

我希望从 1 到 9 的所有数字前面都有一个 0。前一个序列将是

D-08、FE-09、I-18、P-01

有没有办法用公式或作为最后的手段用宏来做到这一点?我可以用公式来做到这一点,但是我一步一步地做这件事已经很久了;将 2 列中的字母与数字分开,添加前导 0,然后将它们重新组合在一起。

【问题讨论】:

  • This post 展示了如何在字符串中查找数字,因此可以对其进行调整,然后在找到的数字前添加-0
  • 您不需要 VBA。这相当简单。你试过什么?

标签: excel vba formula


【解决方案1】:

使用 TEXTJOIN:

=TEXTJOIN(", ",,FILTERXML("<a><b>"&SUBSTITUTE(SUBSTITUTE(A1,",","</b><b>"),"-","</b><b>")&"</b></a>","//b["&(ROW($ZZ$1:INDEX($ZZ:$ZZ,LEN(A1)-LEN(SUBSTITUTE(A1,",",""))+1))-1)*2+1&"]")&"-"&TEXT(FILTERXML("<a><b>"&SUBSTITUTE(SUBSTITUTE(A1,",","</b><b>"),"-","</b><b>")&"</b></a>","//b["&(ROW($ZZ$1:INDEX($ZZ:$ZZ,LEN(A1)-LEN(SUBSTITUTE(A1,",",""))+1))-1)*2+2&"]"),"00"))


根据您的 cmets,每个单元格中只有一个值:

=LEFT(A1,FIND("-",A1))&TEXT(MID(A1,FIND("-",A1)+1,2),"00")

【讨论】:

  • 这行得通,我们可以简化它吗?每个单元格只有一组字母/数字。所以 D-8 在一个单元格中,FE-09 在另一个单元格中,等等。它们都在一列中的不同行上。
  • @Jade 查看编辑。下次尝试更清楚地知道这些值都在单独的单元格中。
  • @Scott 你知道 FilterXML 使用的 XPath 的一个很好的参考吗?
  • @chrisneilsen 这就是我所看到的:w3.org/TR/1999/REC-xpath-19991116,但它并不总是最清晰的,因此我在第一遍时进行了一些试验和错误。
  • @Scott thx,我还在学习 XPath。鉴于您回答的质量,我相信这将是一个很好的开始。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-12-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多