我的数据分布在 45000 行(单列)中。我需要将每 15 行合并为一行。因此,最终我需要将每 15 行的数据合并为 3000 行。
从:
row 1
row 2
row 3
row 4
etc...
进入:
row 1 (rows 1-15)
row 2 (rows 16-30)
row 3 (rows 31-45)
row 4 (rows 46-60)
etc...
我知道如何将 15 行合并为一行,但不知道如何创建模块以在所有 45000 行中重复此操作。
到目前为止,我使用 CONCATENATE 函数将多行(15)合并为一行。但是行数实在太多(45000),我需要找到在所有行中自动执行此操作的方法。所以我认为我需要使用 VBA 创建一个宏。
行中的数据是数字和字符串的组合,下面是前几行的示例:
20181102-112745254375,$IIGLL,4342.3344,N,01548.0639,E,102745.00,A,A*7E
20181102-112745306452,$IIHDG,264.0,,,3.90,E*18
20181102-112745342864,$IIHDT,267.9,T*28
20181102-112745385244,$IIHDM,264.0,M*22
答案1
根据我的最佳理解,我建议采用仍然使用 CONCATENATE 但结合 INDEX 和 ROW 来操作数据的解决方案。
样本数据位于 A 列,从 A1 开始,然后是以下单元格。如果此起始单元格不同,则需要对公式进行轻微操作。
该公式较长,为了稍微缩短它,我在名称管理器中使用了名为 Name1 的名称。
转到名称管理器并创建一个名为 Name1 的新名称,其公式为
=(ROW()-1)*15
现在在 B1 中输入以下公式
=CONCATENATE(INDEX($A:$A,Name1+1),INDEX($A:$A,Name1+2),INDEX($A:$A,Name1+3),INDEX($A:$A,Name1+4),INDEX($A:$A,Name1+5),INDEX($A:$A,Name1+6),INDEX($A:$A,Name1+7),INDEX($A:$A,Name1+8),INDEX($A:$A,Name1+9),INDEX($A:$A,Name1+10),INDEX($A:$A,Name1+11),INDEX($A:$A,Name1+12),INDEX($A:$A,Name1+13),INDEX($A:$A,Name1+14),INDEX($A:$A,Name1+15))
并将其向下拖拽至所需的行。
现在,从 A 列的第 1 个单元格开始,每 15 行应连接成一个单元格,并在单元格 B1、B2 等中一个接一个地堆叠。