将CSV文件中单元格的内容拆分为单独的单元格

我有一个很大的CSV文件充满了组织的名称和地址。 我需要把一个干净的csv文件交给我们的开发者,他们需要在他们周围build立一个数据库。

问题是,街道名称和号码是在同一个单元格,他们需要分开,以便我们可以通过街道名称过滤组织。

所以,我想将地址单元的内容分成两个单元格。 地址单元是这样构build的:[街道名称] [空格] [数字] [等] – 所以我只需要保留街道名称,并将街道名称后的所有内容移动到另一个单元格。

一个例子是内容单元格D7:

[D7] Konkylievej 3,1. mf [/ D7]

这将不得不像这样拆分:

[D7] Konkylievej [/ D7]

[E7] 3,1. mf [/ E7]

CSV文件的大小使得手动无法做到这一点。 有没有办法自动做到这一点?

不是最优雅的解决scheme,但请试试这个…

Option Explicit Sub SeparateAtTheSpace() Dim cell As Range, areaToSplit As Range Dim str As String Dim i As Integer Set areaToSplit = Sheet1.Range("D1:D305") For Each cell In areaToSplit If IsEmpty(cell) = False Then str = cell.Value For i = 1 To Len(str) If IsNumeric(Mid(str, i, 1)) Then If IsEmpty(cell.Offset(0, 1)) = True Then cell.Offset(0, 1).Value = Right(str, Len(str) - i + 1) cell.Value = Left(cell.Value, i - 1) End If End If Next i End If Next cell End Sub 

这与您使用的Excel版本略有不同,但基本上应该select列,并在菜单中find“文本到列”(最有可能是2007年之前版本的数据菜单,或2007年以后的数据function区)。在对话框中select“Delimited”,然后告诉excel使用空格将文本分隔到列。

希望工程

既然你只需要把它分成两个单元格,你可以用一小段VBA代码来完成。 将其粘贴到VBA工作簿的Sheet1代码中(Alt-F11进入VBA编辑器)。 将范围从A1:A200更改为任何您需要的,以及不同的工作表名称(您的数据可能不在Sheet1上)。 一旦你build立起来了,按F5,它应该做你正在寻找的东西。 显然,您可能想要在原始数据的副本中进行testing,以确保获得预期的结果。 我用“123 Main”填充了几个单元,之后在A列中有“123”,在B列中有“123”。它将第一个空格的右边的所有内容放到col B中,并将所有内容修剪到右边的空间,留下什么留在A列。

 Option Explicit Sub SeparateAtTheSpace() Dim cell As Range, areaToSplit As Range Set areaToSplit = Sheet1.Range("A1:A200") For Each cell In areaToSplit If IsEmpty(cell) = False Then cell.Offset(0, 1).Value = Right(cell.Value, InStr(1, cell.Value, " ") + 1) cell.Value = Left(cell.Value, InStr(1, cell.Value, " ")) End If Next cell End Sub