繁体   English   中英

如何在excel中将多行拆分为多列?

[英]How to split multiple rows into multiple columns in excel?

所以我有一个 excel 文件,里面只有一列,里面有 10,000 行数据。 问题是它的格式不正确。 列具有以下模式:

"name"
"address"
"city"
"state"
"name"
"address"
"city"
"state"
"name"
...

.但问题是我需要它是 我想知道是否有办法在 Excel 中或使用脚本来做到这一点。 任何帮助,将不胜感激。 谢谢你。

这是在 Excel 中手动交叉表数据的一种方法:

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

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

现在选择C1并拖动右下角的手柄向右四个单元格。 您应该会看到显示的数据的第一行

最后选择B1F1 向下拖动右下角的手柄。 越往下,你得到的行就越多。

如果您从 sql 获取数据...使用数据透视将您的查询从垂直更改为水平。 现在您不必担心在 excel 中转换它。 看到这个帖子


@Laurence 有一个很好的基于公式的解决方案,但是,如果您需要 vba,因为您使用来自 sql 的新数据转储一遍又一遍地执行此操作,这是一个 VBA 解决方案。

从这个开始:

在此处输入图片说明


使用这个宏:

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

最后得到了这个:

在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM