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

时间:2010-08-09 07:56:37

标签: excel csv

我有一个包含组织名称和地址的大型CSV文件。我需要将干净的csv文件移交给需要围绕它们构建数据库的开发人员。

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

所以,我想将地址单元格的内容分成两个单元格。地址单元格的构建如下:[streetname] [space] [digits] [etc] - 所以我只需保留街道名称,并将街道名称后的所有内容移动到另一个单元格。

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

[D7] Konkylievej 3,1。m.f。[/ D7]

必须像这样拆分:

[D7] Konkylievej [/ D7]

[E7] 3,1。m.f。[/ E7]

CSV文件的大小使得无法手动执行此操作。有没有办法自动完成?

3 个答案:

答案 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