所以我有一个 excel 文件,里面只有一列的 10,000 行数据。问题是它的格式不正确。这些列具有以下模式:
“姓名” “地址” “城市” “状态” “姓名” “地址” “城市” “状态” “姓名” ...
但问题是我需要它是"name" "address" "city" "state"。我想知道是否有办法在 Excel 中执行此操作,或者使用脚本。任何帮助,将不胜感激。谢谢你。
如果您从 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
最后得到了这个:
这是在 Excel 中手动交叉表数据的一种方法:
假设数据在 A 列中。输入以下论坛:
B1: =INT((ROW() - 1 ) * 4)
C1: =INDIRECT("A" & ($B1 + COLUMN() - COLUMN($B1)))
现在选择C1
并拖动右下角手柄右四个单元格。您应该会看到显示的数据的第一行
最后选择B1
到F1
。向下拖动右下角手柄。越往下,你会得到越多的行。