如何将单行列拆分为多行和多列?

如何将单行列拆分为多行和多列?

我到处找过了,要么是我不知道该如何措辞来搜索,要么就是没有找到任何东西。最初,我的 excel 表中的信息是从文本文件中提取的。我不得不做很多工作(分隔和大量查找/替换)才能将其正确传输到 excel 中,但仍然不正确,但我想应该可以了。不幸的是,它将所有内容都放在一行中(即 A1、B1、C1 等)。我需要将信息分成多行;

     A | B
1 | id | 219832
2 | id | 2398
3 | id | 0382
etc

要么这样,要么每个其他单元格都被视为标题的一部分,并且后面的单元格被放置在适当的列中;

     A  |  B   |   C   |   D
1 | id  | type | label | date
2 | 232 |  A   |  Here | 12/12/12
3 | 643 |  B   | There | 10/14/11
4 | 832 |  A   | None  | 09/29/13
etc

目前数据显示如下

    id | TTXW5IAXBSWDETCQZKGUNKK2RYKOVVFQ4S3VGCV | type | A | Label | Here | date | 12/12/12 | id 
etc

如果有人能帮我做这件事,我将不胜感激。虽然第二种选择对我更有帮助,因为这是我真正需要将所有这些信息转移到的地方,但第一种选择也是可以接受的,因为我可以从那里手动操作。另外,为了让你知道这有多大,我的行延伸到 JON1。

编辑:

此外,如果没有全部查找/替换(有些但不是那么多),数据就会被粘贴到每个单元格中;

"id":"TTXW5IAXBSWDETCQZKGUNKK2RYKOVVFQ4S3VGCV"

这就是这种方式

    "id":"TTXW5IAXBSWDETCQZKGUNKK2RYKOVVFQ4S3VGCV" | "type":"A" | "label":"Here" | "date":"12/12/12" | {"id": 
etc

或类似的东西。如果这样更容易操作,那也很好。我还注意到,通过浏览数据,并不是每一行数据都以“id”开头,但是,如果不使用查找/替换来删除它,新行数据的开头前面确实有一个 {;

{"type":"A" |
{"id":"3242134" |
like that

答案1

最简单的方法是通过 VBA。我假设第 1 行的每个单元格上都有一个“字段”,如下所示

{"id" : "TTXW5IAXBSWDETCQZKGUNKK2RYKOVVFQ4S3VGCV" | "type" : "A" | "label": "Here" 

您必须转到宏,并创建一个新的宏,插入以下代码:

 Sub test()
        Dim wks As Worksheet
        Set wks = ActiveSheet
        Final = False
        i = 1
        InitialRow = 2
        Dim labels(0 To 4) As String
        labels(0) = "id"
        labels(1) = "type"
        labels(2) = "label"
        labels(3) = "grouping"
        labels(4) = "created"
        While Final = False
            ThisCell = Trim(wks.Cells(1, i))
            iniChar = Left(ThisCell, 1)
            If iniChar = "{" Then
                lengthCell = Len(ThisCell)
                ThisCell = Trim(Right(ThisCell, lengthCell - 1))
                InitialRow = InitialRow + 1
            End If
            PosLabelinCell = InStr(ThisCell, ":")
            LabelinCell = Trim(Left(ThisCell, PosLabelinCell - 1))
            lLabelinCell = Len(LabelinCell)
            DatainCell = Trim(Mid(ThisCell, PosLabelinCell + 1))
            lDatainCell = Len(DatainCell)
            LabelinCell = Mid(LabelinCell, 2, lLabelinCell - 2)
            DatainCell = Mid(DatainCell, 2, lDatainCell - 2)
            Select Case LabelinCell
                Case labels(0)
                    wks.Cells(InitialRow, 1) = DatainCell
                Case labels(1)
                    wks.Cells(InitialRow, 2) = DatainCell
                Case labels(2)
                    wks.Cells(InitialRow, 3) = DatainCell
                Case labels(3)
                    wks.Cells(InitialRow, 4) = DatainCell
                Case labels(4)
                    wks.Cells(InitialRow, 5) = DatainCell
            End Select
            i = i + 1
            If wks.Cells(1, i) = "" Then
                Final = True
            End If
        Wend
End Sub

它将遍历第一行的所有单元格,并检查单元格是否以符号开头{,假设这是新队字符。如果您提供的 4 个标签(id、类型、标签、分组、创建)中缺少一个标签,它将留下一个空白单元格。

现在,使用 F5 或绿色“播放”按钮运行宏;从第 3 行开始将显示按列组织的所有数据。

答案2

您可以使用 Excel 内置功能。

请遵循以下步骤:

  1. 数据标签。
  2. 在里面数据工具您将会看到“文本分列”点击它。

现在根据您的需要,按照将文本转换为列向导中的说明进行操作。

如果这对您没有帮助,请提供一个输入行和所需输出。

相关内容