MS Excel – 我如何parsing一个string,直到我到达最后?

在MS Excel中。

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

例如:

'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) 

但是这最后会导致一连串的逗号,于是我不得不清理掉。 有没有更好的方式来写这个公式,以便它会自动停止,当它到达原始string的结尾? 我认为必须有一种方法来将LENfunction纳入其中,但是我的技能太有限了。

试试这个小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. 粘贴东西,closuresVBE窗口

如果保存工作簿,则UDF将随之保存。 如果您在2003年以后使用的是Excel版本,则必须将该文件另存为.xlsm而不是.xlsx

要删除UDF:

  1. 如上所示调出VBE窗口
  2. 清除代码
  3. closuresVBE窗口

从Excel中使用UDF:

= inacomma(A1)

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

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

macros必须启用这个工作!

在这里输入图像说明

标准函数的更高效的应用并没有出现在我的脑海里,所以根据公式的长度,我猜测再多一点也不是问题:

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