Excel:为文本/字符串中的每个数字指定自己的单元格

时间:2015-05-06 10:24:05

标签: excel excel-vba numbers extract vba

我有一个包含9位数字的文本文件。我需要Excel来读取文本(<p>Everything is aligned to baseline before floating:</p> <div id="nofloat"> <header> <h1>Title</h1> <nav> <ul> <li>One</li> <li>Two</li> <li>Three</li> </ul> </nav> </header> </div> <p>But after floating it's messed up:</p> <div id="float"> <header> <h1>Title</h1> <nav> <ul> <li>One</li> <li>Two</li> <li>Three</li> </ul> </nav> </header> </div>)文件或文本单元格,并将每个9位数字添加到列中的每个单元格。
示例文本文件:

.txt

Excel结果:

123456789, 987654321, 213454321 / 987656789, [098752739]

有什么建议吗?

3 个答案:

答案 0 :(得分:0)

您可以使用标准Excel功能从文本文件导入数据。功能区选项卡数据 - &gt;来自文字。

答案 1 :(得分:0)

从您的结果中,每个单元格包含9位数字:

  1. 点击数据 - &gt;文字到列

  2. 选择“固定宽度

  3. 然后,您需要在每个九个之间设置断行 数字

  4.   

    可选:点击“下一步”以格式化每个字段

    1. 最后,点击“完成
    2. 您现在应该在单独的列中看到九个数字中的每一个。

答案 2 :(得分:0)

假设您的数据位于单个单元格中,那么您的任务有三个部分:

  • 从文本文件中读取数据
  • 解析每个单元格
  • 将结果存储在一列

此代码仅涉及第二部分:

Sub ParseData()
    Dim s1 As String
    s1 = Range("A1").Text
    s1 = Replace(s1, " ", "|")
    s1 = Replace(s1, "/", "|")
    s1 = Replace(s1, "[", "|")
    s1 = Replace(s1, "]", "|")
    s1 = Replace(s1, ",", "|")
    s1 = CleanUp(s1, "|")
    ary = Split(s1, "|")

    i = 1
    For Each a In ary
        Cells(i, 2).NumberFormat = "@"
        Cells(i, 2).Value = a
        i = i + 1
    Next a
    End Sub


Public Function CleanUp(sIN As String, sep As String) As String
    Dim temp As String, temp2 As String, i As Long, CH As String
    temp = sIN
    While Left(temp, 1) = sep
        temp = Mid(temp, 2)
    Wend

    While Right(temp, 1) = sep
        temp = Mid(temp, 1, Len(temp) - 1)
    Wend

    temp2 = ""
    For i = 1 To Len(temp)
        CH = Mid(temp, i, 1)
        If temp2 = "" Then
            temp2 = CH
        ElseIf CH <> sep Then
            temp2 = temp2 & CH
        ElseIf Right(temp2, 1) <> sep Then
            temp2 = temp2 & CH
        End If
        Next i
    CleanUp = temp2
End Function

备注:

代码用单个管道替换各种字段分隔符。然后使用管道分割数据。然后将得到的数组存储在单元格中:

enter image description here