2013-11-01 96 views
0

所以我有一個excel文件充滿了只有一列的10,000行數據。問題是它的格式不正確。列有一個模式:如何在Excel中將多行分割成多列?

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

,但問題是我需要的是「名稱」,「地址」,「城市」,「國家」。我想知道是否有辦法在Excel中執行此操作,或者可能使用腳本。任何幫助,將不勝感激。謝謝。

+1

如何存儲值?有沒有分隔符?提供更多信息並澄清您需要的內容(可能提供了完成後應該看起來的樣本的示例)。 – Dan

回答

1

這裏有一個辦法在Excel中手動交叉表數據:

假定數據是在列A 輸入以下forumlae:

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

現在選擇C1並拖動右下角手柄正確的四個細胞。您應該看到顯示的第一行數據爲

最後選擇B1F1。向下拖動右下角的手柄。越往下,你會得到越多的行。

1

如果您從sql獲取數據...使用數據透視表將您的查詢從垂直變爲水平。現在你不必擔心在excel中轉​​換它。看到這個post


@Laurence具有良好的公式爲基礎的解決方案,但是,如果你需要的VBA,因爲你這樣做一遍又一遍用新的數據從SQL轉儲這裏是一個VBA解決方案。

入門本:

enter image description here


使用此宏:

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 

,結束了這一點:

enter image description here