如何在一个文本文件中使用分隔符指示新行,这个文本文件将在以后导入到Excel中

对于文本文件中的以下文本格式:

姓名:Test1,Email:Test1 @ email.com,电话:81273807,年龄:22,性别:男,姓名:Test2,Email:Test2 @ email.com,电话:81453807,年龄:32,性别:女…等等

编号喜欢在Excel中导入,所以它看起来像这样:

> Name | Email | Phone | Age | Gender | > Test1 | Test1@email.com | 81273807 | 22 | Male | > Test2 | Test2@email.com | 81453807 | 32 | Female | > etc 

无论如何,通过以某种方式格式化文本文件来做到这一点? VBA可以避免吗?

  • 打开一个新的空白工作簿。
  • 单击Sheet1名称选项卡并select查看代码
  • 当VBE打开时,将以下内容粘贴到标题为Sheet1(Code)的代码表

码:

 Option Explicit Private Sub Worksheet_Change(ByVal Target As Range) If Target.Parent.UsedRange.Cells.Count = 1 And _ Target.Cells.Count = 1 And _ Target.Address(0, 0) = "A1" Then On Error GoTo safe_exit Application.EnableEvents = False Dim a As Long, b As Long, arr1 As Variant, arr2 As Variant, hdr As Variant, tmp As Variant arr1 = Split(Replace(Target.Value2, ",Name:", vbLf & "Name:"), vbLf) For a = LBound(arr1) To UBound(arr1) arr2 = Split(arr1(a), Chr(44)) For b = LBound(arr2) To UBound(arr2) tmp = Split(arr2(b), Chr(58)) hdr = Application.Match(tmp(0), Rows(1), 0) If IsError(hdr) Then Cells(1, Columns.Count).End(xlToLeft).Offset(0, 1) = tmp(0) hdr = Application.Match(tmp(0), Rows(1), 0) End If Cells(2 + a, hdr) = tmp(1) Next b Next a Columns(1).EntireColumn.Delete End If safe_exit: Application.EnableEvents = True End Sub 

– 点击Ctrl + Q返回到新的空白工作表。 – 在记事本或其他文本编辑器中打开TXT文件,并复制整个事情。 – 返回新的空白Sheet1并将文本粘贴到A1中。

在这里输入图像说明

正如我在我的评论中所说的,你可以使用\nName:换行/回车)replace,Name:

这在Notepad ++(一个免费的程序)中很容易实现

https://notepad-plus-plus.org/

确保将Search Mode设置为Extended

使用查找: ,Name:

replace为: \nName:

演示

当您将其设置为使用Comma Delimited时,它会变成这样的样子

DEMO2