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)非常易于安装和使用:
- ALT-F11调出VBE窗口
- ALT-I ALT-M打开一个新的模块
- 粘贴东西,closuresVBE窗口
如果保存工作簿,则UDF将随之保存。 如果您在2003年以后使用的是Excel版本,则必须将该文件另存为.xlsm而不是.xlsx
要删除UDF:
- 如上所示调出VBE窗口
- 清除代码
- 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)