所以我有一个庞大的数据集,其未处理的格式是一个 CSV 文件,包含两个堆叠在一起的列表。在下图中,文件的分隔版本以 A 列和 B 列表示,第一个数据集在 A1:B3 中,第二个数据集在 A5:B11 中,第三个数据集在 A13:B19 中,等等......有超过 700 万个数据点,因此手动执行此操作将需要实际的一生。
我希望数据看起来像第二张图片,其中我创建了一个执行此操作的方程。但是它不能解释表格长度的差异;而且对整个数据集进行 VLOOKUP 会导致我的计算机崩溃。
有人一定知道我如何导入该数据集并获得我所描述的结果,请帮忙!
这是处理之前的数据集
这就是我希望数据最终出现在 F2:L9 中的样子。将 F2 视为最终输出中的单元格 A1
答案1
我已经快速地为您编写了一些基本代码,以便使用宏来执行此操作。
Sub RotateData()
'Row 1
Dim r As Integer
r = 1
'Column 1 or "A"
Dim c As Integer
c = 1
Dim ws As Worksheet: Set ws = ActiveSheet
Do While ws.Cells(r, c) <> ""
Do While ws.Cells(r, c) <> ""
ws.Cells(c, r + 5) = ws.Cells(r, c)
r = r + 1
Loop
r = 1
c = c + 1
Loop
End Sub
>
这是一般的想法,因为
TRANSPOSE()
excel 中的函数仅限于处理一定数量的项目。我处理过 280mb 的 csv 文件,发现单独的工作簿和仅引用数据集可以节省大量的 CPU 和 RAM 使用量。此代码确实要求您在每个单元格中都有“某些内容”。