【问题标题】:Change ",00 text" to ",00 | text" in excel在excel中将“,00 text”更改为“,00 | text”
【发布时间】:2019-06-17 03:13:11
【问题描述】:

我想将excel中字符串中的一些文本替换为不同的字符串。

数据看起来像:“text some more text 0,00 text some more text 0,00 text”

文本可以是任何内容,但不包含小数。 0,00 是一个数字示例,可以是 0,00 到 9999,99 之间的任何值。有了公式,我想把上面的例子改成:

数据看起来像:“text some more text 0,00 | text some more text 0,00 | text”

如何在excel中安排这个?

寻找诸如正则表达式替换之类的东西

【问题讨论】:

    标签: excel replace


    【解决方案1】:

    您可以使用 VBA 编写的用户定义函数轻松完成此操作:

    Option Explicit
    Function addPipes(S As String) As String
        Dim V As Variant
        Dim I As Long
    
    V = Split(S)
    For I = 0 To UBound(V)
        If V(I) Like "*#,#*" Then V(I) = V(I) & " |"
    Next I
    
    addPipes = Join(V)
    
    End Function
    

    不过,如果您的最终目标是拆分管道上的字符串,并且无论如何您都在使用 VBA,那么您可以使用简单的宏进行拆分。

    另外,如果您有一些包含d,d 模式的单词(其中d 是一个数字,我们必须修改Like 比较。

    【讨论】:

      【解决方案2】:

      正则表达式(UDF,用户自定义函数):

      Function ReplaceText(cell)
          With CreateObject("VBScript.RegExp")
              .Pattern = "(\d\s)": .Global = True
              ReplaceText = .Replace(cell, "$1| ")
          End With
      End Function
      

      【讨论】:

      • 考虑到他的规格,使用\b(\d{1,4},\d{2}\s+) 可能会更健壮:范围从 0,00 到 9999,99
      【解决方案3】:

      用A2中的原文字符串试试,

      =REPLACE(REPLACE(A2, FIND(",", A2, FIND(",", A2)+1)+3, 1, " | "), FIND(",", A2)+3, 1, " | ")
      

      没有本机工作表正则表达式,但可以在 VBA 用户定义函数中轻松完成。

      【讨论】:

      • 这是否也适用于具有大约 15 或 20 个 "0,00" 值的字符串?或者这仅适用于我最初的示例“文本更多文本 0,00 | 文本更多文本 0,00 | 文本”?
      • 不,您需要使用 VBA 和 RegEx.Replace 创建一个用户定义的函数。
      猜你喜欢
      • 1970-01-01
      • 2012-04-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多