2016-12-05 61 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 
相关问题