MS Excel - 如何解析字符串直到结束?

时间:2015-03-20 14:33:43

标签: excel

在MS Excel中。

我有一串长度不一的字符,但总长度是偶数个字节。我需要在每两个字节后放一个逗号,直到我到达字符串的末尾。一旦我到达字符串的末尾,我不想写逗号,我想停止。

例如:

'1234567890' should turn into '12,34,56,78,90'
'12' should turn into '12'
'1234' should turn into '12,34'

我现在的蛮力'方法是使用以下公式:

 =MID(A1,1,2)&","&MID(A1,3,2)&","&MID(A1,5,2)&...&MID(A1,101,2)

但是这导致最后一堆逗号,然后我必须擦除。有没有更好的方法来编写这个公式,以便它到达原始字符串的末尾时自动停止?我认为必须有一种方法将LEN功能纳入其中,但我的技能太有限了。

2 个答案:

答案 0 :(得分:1)

试试这个小 UDF

Public Function InAComma(v As Variant) As String
    Dim L As Long
    L = Len(v)
    If L = 2 Then
        InAComma = v
        Exit Function
    End If

    InAComma = ""
    For i = 1 To L Step 2
        InAComma = InAComma & "," & Mid(v, i, 2)
    Next i
    InAComma = Mid(InAComma, 2)
End Function

用户定义函数(UDF)非常易于安装和使用:

  1. ALT-F11调出VBE窗口
  2. ALT-I ALT-M打开了一个新模块
  3. 粘贴内容并关闭VBE窗口
  4. 如果保存工作簿,UDF将随之保存。 如果您在2003年之后使用的是Excel版本,则必须保存 该文件为.xlsm而不是.xlsx

    删除UDF:

    1. 按上述方式调出VBE窗口
    2. 清除代码
    3. 关闭VBE窗口
    4. 从Excel使用UDF:

      = inacomma(A1)

      要了解有关宏的更多信息,请参阅:

      http://www.mvps.org/dmcritchie/excel/getstarted.htm

      http://msdn.microsoft.com/en-us/library/ee814735(v=office.14).aspx

      有关UDF的详细信息,请参阅:

      http://www.cpearson.com/excel/WritingFunctionsInVBA.aspx

      必须启用宏才能使其生效!

      enter image description here

答案 1 :(得分:0)

为此我不介意更有效地应用标准功能,所以考虑到公式的长度,我猜一点也不会成为一个问题:

=LEFT(MID(A1,1,2)&","&MID(A1,3,2)&","&MID(A1,5,2)...&MID(A1,101,2),1.5*LEN(A1)-1)