我到处找过了,要么是我不知道该如何措辞来搜索,要么就是没有找到任何东西。最初,我的 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 内置功能。
请遵循以下步骤:
- 去数据标签。
- 在里面数据工具您将会看到“文本分列”点击它。
现在根据您的需要,按照将文本转换为列向导中的说明进行操作。
如果这对您没有帮助,请提供一个输入行和所需输出。