如何在Excel中将多行分割成多个列?

所以我有一个excel文件充满了只有一列的10,000行数据。 问题在于格式不正确。 这些列有一个模式:

 “名称”
 “地址”
 “市”
 “州”
 “名称”
 “地址”
 “市”
 “州”
 “名称”
 ...

但问题是我需要它是“名称”“地址”“城市”“国家” 。 我想知道是否有办法做到这一点在Excel中,或者可能使用脚本。 任何帮助,将不胜感激。 谢谢。

以下是在Excel中手动交叉选项卡数据的一种方法:

假设数据在列A中。input以下论坛:

B1: =INT((ROW() - 1 ) * 4) C1: =INDIRECT("A" & ($B1 + COLUMN() - COLUMN($B1))) 

现在selectC1并拖动右下angular的右边四个单元格。 您应该看到显示的第一行数据

最后selectB1F1 。 向下拖动右下angular的手柄。 越往下,你会得到越多的行。

如果您从SQL获取数据…使用枢轴更改您的查询从垂直到水平。 现在你不必担心在Excel中转​​换它。 看到这个职位


@Laurence有一个很好的基于公式的解决scheme,但是,如果你需要vba,因为你用sql这个新的数据转储做这个遍历是一个VBA解决scheme。

开始这个:

在这里输入图像说明


使用这个macros:

 Sub TransposeColA() LastRow = Cells(Rows.Count, 1).End(xlUp).Row cntr = 1 For rowNum = 1 To LastRow If Cells(rowNum, 1).Value <> "" Then Set rngA = Range(Cells(rowNum, 1), Cells(rowNum, 1).Offset(3, 0).Address) Range("B" & rowNum & ":E" & rowNum).Value = Application.Transpose(rngA) rngA.Delete Else Rows(rowNum).Delete Shift:=xlUp rowNum = rowNum - 1 cntr = cntr + 1 If cntr = LastRow Then Exit Sub End If Next rowNum End Sub 

结果是:

在这里输入图像说明