所以我有一个excel文件充满了只有一列的10,000行数据。问题是它的格式不正确。列有一个模式:如何在Excel中将多行分割成多列?
"name" "address" "city" "state" "name" "address" "city" "state" "name" ...
,但问题是我需要的是“名称”,“地址”,“城市”,“国家”。我想知道是否有办法在Excel中执行此操作,或者可能使用脚本。任何帮助,将不胜感激。谢谢。
所以我有一个excel文件充满了只有一列的10,000行数据。问题是它的格式不正确。列有一个模式:如何在Excel中将多行分割成多列?
"name" "address" "city" "state" "name" "address" "city" "state" "name" ...
,但问题是我需要的是“名称”,“地址”,“城市”,“国家”。我想知道是否有办法在Excel中执行此操作,或者可能使用脚本。任何帮助,将不胜感激。谢谢。
这里有一个办法在Excel中手动交叉表数据:
假定数据是在列A 输入以下forumlae:
B1: =INT((ROW() - 1) * 4)
C1: =INDIRECT("A" & ($B1 + COLUMN() - COLUMN($B1)))
现在选择C1
并拖动右下角手柄正确的四个细胞。您应该看到显示的第一行数据为
最后选择B1
至F1
。向下拖动右下角的手柄。越往下,你会得到越多的行。
如果您从sql获取数据...使用数据透视表将您的查询从垂直变为水平。现在你不必担心在excel中转换它。看到这个post
@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
,结束了这一点:
如何存储值?有没有分隔符?提供更多信息并澄清您需要的内容(可能提供了完成后应该看起来的样本的示例)。 – Dan