VBA的Excel – 如何划分一个单元格多次呢?
我正在写一个macros,使用文本到列函数将一个单元格中的一些数据分隔为多个列。 我遇到的问题是找出一种方法来多次分离单元格,如下所示:“9:0011:008:0012:30”。 我想把它分成:“9:00”“11:00”等等。如果我用“:”分开,我会得到9,00,11,00。如果我用“:* *“我只会得到9日,11日,8日,12日,切断12:30的时间。
提前致谢!
这是我的高尔夫尝试:
Option Explicit Public Sub TestMe() Dim strInput As String Dim counter As Long Dim strCurrent As String strInput = "9:0011:008:0012:30" For counter = 1 To Len(strInput) - 2 If Mid(strInput, counter, 1) = ":" Then Debug.Print strCurrent & Mid(strInput, counter, 3) counter = counter + 2 strCurrent = vbNullString Else strCurrent = strCurrent & Mid(strInput, counter, 1) End If Next counter End Sub
它很好地返回:
9:00 11:00 8:00 12:30
它假定分钟总是有两位数字。 你可以很容易的把它改成一个函数,返回Array()
。
TextToColumns()函数需要一个本质上被“牺牲”的分隔符,并且在这些string中没有一个! 因此, TextToColumns()方法是不可行的。
我build议你使用VBAstring操作函数:
- findstring中第一个“:”的位置; 称之为“p”
- 将你的第一个项目(从第一个字符到第二个字符)提取到一个输出variables中,称之为
x
- 从原始string中删除x
- 转到步骤1