没有空格时Excel“文本到列”

时间:2017-02-10 19:31:13

标签: excel excel-formula

我在一列中有大约800行数据。该列中的数据如下所示:

|Column A                        |  
|195Marriott International127,500|

我怎样才能将excel分解为列,如下所示:

|Column A| |Column B| |Column C|  
|195| |Marriott International| |127,500|

谢谢!

3 个答案:

答案 0 :(得分:0)

编辑:

但是你确实有一些你可以使用的模式。请注意,第一列和第三列中包含数字。选择列A,使用= RIGHT()提取最后一个字符。您只需要9次替换(1 - 9),然后连接值。对第3列中的第一个数字执行相同操作。然后,您将具有分隔值以将文本用于列。

==== 您可以使用Excel上数据选项卡下的文本到列工具。

您可以拆分列中一个或多个单元格的内容,然后将这些内容作为单个部分分布到相邻列中的其他单元格中。例如,如果您的工作表包含一个全名列,则可以将该列拆分为单独的名字和姓氏列。

答案 1 :(得分:0)

我看到你从Solar Mike的评论中找到了解决方案,但这里有另一种选择。

下面是一小段VBA,它将预处理数据,插入一个可行的分隔符。我在有限的数据上测试了它,因此可能会产生需要纠正的错误。

VBA ......

Option Explicit
Sub MakeDelimiters()
Dim LastRow As Long, iLoop As Long
Dim myDelim As String, myStr As String
Dim theRng As Range, theSht As Worksheet, theCell As Range

    myDelim = ";"

    Set theSht = Worksheets("Sheet1")

    LastRow = theSht.Range("A" & theSht.Rows.Count).End(xlUp).Row

    Set theRng = theSht.Range("A1:A" & LastRow)

    For Each theCell In theRng
        myStr = theCell.Value
        For iLoop = 1 To Len(myStr)
            If IsNumeric(Mid(myStr, iLoop, 1)) And _
               Not IsNumeric(Mid(myStr, iLoop + 1, 1)) And _
               Mid(myStr, iLoop + 1, 1) <> "," Then
                myStr = Left(myStr, iLoop) & myDelim & Right(myStr, Len(myStr) - iLoop)
            End If
            If IsNumeric(Mid(myStr, iLoop + 1, 1)) And _
               Not IsNumeric(Mid(myStr, iLoop, 1)) And _
               Mid(myStr, iLoop, 1) <> "," And _
               Mid(myStr, iLoop, 1) <> myDelim Then
                myStr = Left(myStr, iLoop) & myDelim & Right(myStr, Len(myStr) - iLoop)
            End If
        Next iLoop
        theCell.Value = myStr
    Next theCell

End Sub

转换了这个......

enter image description here

到此......

enter image description here

答案 2 :(得分:-1)

<强>更新

未来访客的数据看起来过于简单......

  

lhs总是3个数字,从不2或4吗?右边3,3? -SolarMike

......太可笑了。所以我提出了这个解决方案。这个答案取决于评论:

  

A列和C列是否总是数字?或者更确切地说,A列总是以数字结尾,而C列总是以数字开头? - OldUgly

     

@OldUgly - 是的,就是这里的情况--BigMike

要回答关于“文字到列”的原始问题,我不知道。但是,这被标记为 excel-formula ,所以我试了一下并想出了这个......

enter image description here

...假设您真的想要列A-C中的数据。 E2和{{1}中的两个辅助数组公式 Ctrl + Shift + 输入)分别是......

F2

=MIN(FIND(0,SUBSTITUTE(D2,CHAR(ROW(INDIRECT("65:90"))),0)&0)) =MIN(FIND(0,SUBSTITUTE(D2,CHAR(ROW(INDIRECT("48:57"))),0)&0,E2+1)) A2B2中的公式分别是(非常明显)......

C2

啊,好的旧ASCII表