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操作函数:

  1. findstring中第一个“:”的位置; 称之为“p”
  2. 将你的第一个项目(从第一个字符到第二个字符)提取到一个输出variables中,称之为x
  3. 从原始string中删除x
  4. 转到步骤1