2016-12-05 60 views
0

我有一個包含名稱和日期的文件。將數據從一個單元拆分爲多個單元

例子:

Jane Hoffen30. october 2014 v 19:31 UTC+01  
Lenka Copper30. october 2014 v 19:31 UTC+01 

我需要分裂的姓名和日期,兩個單元,這樣的事情:

Jane Hoffen -----  30. october 2014 v 19:31 UTC+01   
Lenka Copper -----  30. october 2014 v 19:31 UTC+01  

或者三個單元

Jane Hoffen ------  30. october 2014 -----  19:31  
Lenka Copper ------  30. october 2014 -----  19:31 

我試着創建一些宏,但沒有任何工作。

+3

你到目前爲止嘗試過什麼?顯示代碼,即使它不起作用,也可以幫助他人更好地理解你正在努力完成的任務。它還可以讓他們看到你出錯的地方,並提供有價值的VBA提示。 –

+0

您應該在功能區的數據選項卡上試驗* text-to-columns *功能 – CallumDA

回答

0

試試下面的代碼,並根據您的需要進行調整。它遍歷A列中的所有單元格,並在位置中搜索出現在單元格內容中的第一個數字。隨後,左側部分達到的位置放在B列,其餘的列C.

Sub split() 
Dim n As Long 
Dim m As Long 
Dim EndOfNamePos As Integer 
Dim SrcText As String 
Dim TrgName As String 
Dim TrgDate As String 

    For n = 1 To ThisWorkbook.Sheets("Sheet1").Range("A:A").End(xlDown).Row 

     SrcText = ThisWorkbook.Sheets("Sheet1").Cells(n, 1).Value 

     'Find first Number in the Source Column 
     For m = 1 To Len(SrcText) 
      If IsNumeric(Mid(SrcText, m, 1)) = True Then 
       EndOfNamePos = m 
       Exit For 
      End If 

     Next m 

     TrgName = Left(SrcText, EndOfNamePos - 1) 
     TrgDate = Right(SrcText, Len(SrcText) - EndOfNamePos + 1) 

     ThisWorkbook.Sheets("Sheet1").Cells(n, 2).Value = TrgName 
     ThisWorkbook.Sheets("Sheet1").Cells(n, 3).Value = TrgDate 

     TrgName = "" 
     TrgDate = "" 
     SrcText = "" 
    Next n 

End Sub 
0

這會做你要找什麼用RegEx(正則表達式)。這需要最少的循環

Public Sub SeparateStringWithRegEx() 
    Dim rng As Range 
    Dim RegEx As Object 
    Dim Match, Matches 
    Dim c 

    Set RegEx = CreateObject("VBScript.RegExp") 

    ' Change this to your range 
    With Sheet1 
     Set rng = .Range(.Cells(1, 1), .Cells(.Cells(.Rows.Count, 1).End(xlUp).Row, 1)) 
    End With 

    With RegEx 
     .Pattern = "^\D+" 
     .IgnoreCase = True 
     .Global = True 
    End With 

    For Each c In rng 
     Set Match = RegEx.Execute(c) 
     c.Offset(0, 1) = Trim(Match(0)) 
     c.Offset(0, 2) = Trim(Replace(c, Match(0), "")) 
    Next c 
End Sub 
相關問題