Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 将CSV文件中的单元格内容拆分为单独的单元格_Excel_Csv - Fatal编程技术网

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

Excel 将CSV文件中的单元格内容拆分为单独的单元格,excel,csv,Excel,Csv,我有一个很大的CSV文件,里面有组织的名称和地址。我需要移交一个干净的csv文件给我们的开发人员谁需要建立一个围绕他们的数据库 问题是街道名称和编号在同一个单元格中,它们需要分开,以便我们可以按街道名称筛选组织 我想把地址单元格的内容分成两个单元格。地址单元是这样构建的:[streetname][space][digits][etc]——因此我只需要保留街道名称,并将街道名称之后的所有内容移动到另一个单元 例如,内容单元D7: [D7]Konkylievej 3,1。m、 f.[D7] 必须像这

我有一个很大的CSV文件,里面有组织的名称和地址。我需要移交一个干净的csv文件给我们的开发人员谁需要建立一个围绕他们的数据库

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

我想把地址单元格的内容分成两个单元格。地址单元是这样构建的:[streetname][space][digits][etc]——因此我只需要保留街道名称,并将街道名称之后的所有内容移动到另一个单元

例如,内容单元D7:

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

必须像这样进行拆分:

[D7]Konkylievej[/D7]

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


CSV文件的大小使得无法手动执行此操作。有什么方法可以自动完成吗?

这会随着您使用的Excel版本的不同而略有变化,但基本上您应该选择列,并在菜单中查找列的文本,最有可能是2007年以前版本的“数据”菜单,或2007年以后版本的“数据”功能区。 然后在对话框中,选择Delimited,然后告诉excel使用空格将文本分隔为列


希望它能起作用

因为您只需将其拆分为两个单元格,只需一小段VBA代码即可完成。将其粘贴到VBA工作簿Alt-F11的Sheet1代码中,以进入VBA编辑器。将范围从A1:A200更改为所需的范围,以及数据可能不在Sheet1上的不同图纸名称。一旦你把它设置好,点击F5,它就会完成你想要的。显然,您可能希望在原始数据的副本中进行测试,以确保获得预期的结果。我用123 Main填充了几个单元格,之后在A列中填充了123,在B列中填充了Main。它将把第一个空格右边的所有内容都放在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

不是最优雅的解决方案,但请尝试此

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

你可能想看看我的自由/开源软件工具CSVfix at,特别是split_char命令。虽然我已经回答了,但我不确定这是一个编程问题,严格地说是hi-Michael,这实际上非常接近。不幸的是,一些街道名称中有空格。有没有可能稍微改变一下这个说法,使它读起来像这样。将所有内容移到第一个空格(后跟一个数字)左侧,并将其移动到当前空格左侧的列中。在下面,您将看到我如何修改您的代码以满足我的需要,以及结果。下面是修改后的代码:Option Explicit Sub SeparateTheSpace Dim cell As Range,Area ToSplit As Range Set Area ToSplit=Ark1。Range1:D305对于Area ToSplit中的每个单元格,如果IsEmptycell=False,则为cell.Offset0,1.Value=Rightcell.Value,InStr1,cell.Value,+1 cell.Value=Leftcell.Value,InStr1,cell.Value,End如果下一个cell End SubHere是一段原始代码和运行上面代码的结果:original:result:HI Yoni H.我尝试了您的解决方案,有一刻我认为它会起作用,但当我需要一个能匹配任何数字的通配符delimeter时,我被卡住了。我想这里可能有一些误解。分隔符将文本分隔为字段,因此任何数字都不需要通配符,只需要街道和数字之间的分隔符。在我看来,这可能只是空间,但我可能出了什么问题。效果很好。谢谢