【问题标题】:Excel: Give each number in a text/string its own cellExcel:为文本/字符串中的每个数字赋予其自己的单元格
【发布时间】:2015-05-06 10:24:05
【问题描述】:

我有一个包含 9 位数字的文本文档。我需要 Excel 来读取文本 (.txt) 文件或文本单元格,并将每个 9 位数字添加到列中的每个单元格中。
示例文本文件:

123456789, 987654321, 213454321 / 987656789, [098752739]

Excel结果:

123456789
987654321
213454321
987656789
098752739

有什么建议吗?

【问题讨论】:

  • 你是说你的数字都在文本文件的一行,还是每行一个数字?
  • 文本文件中的“全是 9 位数字”是什么样的?您的要点有几个 9 位数字集,由几个不同的字符分隔。您能否将更全面的示例发布为文本文件(使用文件共享服务并发布链接)

标签: excel numbers extract vba


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    根据您的结果,每个单元格都包含 9 位数字:

    1. 点击数据 -> 文本到列

    2. 选择“固定宽度

    3. 然后你需要在你的九个中的每一个之间设置断线 数字

    可选:单击“下一步”以设置每个字段的格式

    1. 最后,点击“完成

    您现在应该在单独的列中看到九位数字中的每一个。

    【讨论】:

      【解决方案3】:

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

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

      此代码仅涉及第二部分:

      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
      

      注意事项:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-09-26
        • 1970-01-01
        • 1970-01-01
        • 2019-07-16
        • 1970-01-01
        • 2019-03-20
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多