我有一个包含组织名称和地址的大型CSV文件。我需要将干净的csv文件移交给需要围绕它们构建数据库的开发人员。
问题是街道名称和号码在同一个单元格中,它们需要分开,以便我们可以按街道名称过滤组织。
所以,我想将地址单元格的内容分成两个单元格。地址单元格的构建如下:[streetname] [space] [digits] [etc] - 所以我只需保留街道名称,并将街道名称后的所有内容移动到另一个单元格。
一个例子是内容单元格D7:
[D7] Konkylievej 3,1。m.f。[/ D7]
必须像这样拆分:
[D7] Konkylievej [/ D7]
[E7] 3,1。m.f。[/ E7]
CSV文件的大小使得无法手动执行此操作。有没有办法自动完成?
答案 0 :(得分:0)
这与您正在使用的Excel版本略有不同,但基本上您应该选择该列,并在菜单中找到“Text to Columns”(最有可能是2007年之前版本中的Data Menu,或2007年之后的Data Ribbon) 。) 然后在对话框中选择“Delimited”,然后告诉excel使用空格将文本分隔为列。
希望有效
答案 1 :(得分:0)
由于您只需将其拆分为两个单元格,因此可以使用一小段VBA代码完成此操作。将其粘贴到VBA工作簿的Sheet1代码中(Alt-F11以转到VBA编辑器)。将范围从A1:A200更改为您需要的范围,以及不同的工作表名称(您的数据可能不在Sheet1上)。一旦你完成了设置,点击F5,它应该做你想要的。显然,您可能希望在原始数据的副本中对此进行测试,以确保获得预期的结果。我用“123 Main”填充了几个单元格,然后在A列中填充了“123”,在B列填充了“Main”。它将把第一个空间右边的所有内容放入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
答案 2 :(得分:0)
不是最优雅的解决方案,但请尝试一下......
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