2013-07-15 221 views
-1

我有什麼:我有很多數據組織在許多小表(鬆散地說,不是「真正的」表),它們是一個接一個地放在一個和下一個之間留下兩個列。這些「表格」全部由六個列和一個變量行數組成。這些表格從單元格A1開始。因此,例如,第一個表佔用列A到F,第二個表到N,等等。如何合併在Excel中水平分割的垂直數據?

我需要的是什麼:我需要把所有這些表格放在一個之下,以創建一個數據庫導出到統計軟件進行進一步分析。我需要的腳本應該將第二個表格剪切(或複製)並粘貼到第一個表格的下面,兩者之間沒有空行。然後前進到第三個,然後粘貼到第二個之下,依此類推。

我從來沒有使用過VBA,但我需要一些東西來自動完成這個過程,因爲手工做這件事需要很多天。我用C++和R編程,所以如果你能給我一些指導,我可以嘗試把它放在一個VBA腳本中。

非常感謝。

+0

怎麼樣的表頭? – 2013-07-15 10:13:21

+1

請向我們展示您所遇到的代碼,以及您到目前爲止所嘗試的代碼 –

+0

我很抱歉,即使我對'vba'完全陌生,我也會嘗試生成一些代碼,我只是在尋找好方向採取。但我會嘗試自己弄清楚。 – Wilco

回答

1

我已複製你的表,所以它看起來像這樣的

reproduced table

然後我寫的代碼來完成這樣的 end

我認爲這是你在找什麼,繼承人代碼

Sub Main() 
    Dim ws As Worksheet 

    Set ws = Sheets("Sheet1") ' rename sheet 

    Dim i&, j& 
    Dim curHead As String 
    Dim nextHead As String 
    For i = 1 To 3 
     curHead = CStr(ws.Cells(1, i).Text) 
     For j = 4 to ws.Cells(1, Columns.Count).End(xlToLeft).Column 
      nextHead = CStr(ws.Cells(1, j).Value) 
      If StrComp(curHead, nextHead, vbTextCompare) = 0 Then 
       ws.Range(Cells(2, j), Cells(ws.Cells(Rows.Count, j).End(xlUp).Row, j)).Copy 
       ws.Cells(ws.Cells(Rows.Count, i).End(xlUp).Row + 1, i).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False 
      End If 
     Next j 
    Next i 
End Sub 
+0

它引發我「運行時錯誤'9':下標超出範圍」 – Wilco

+0

您是否已將Sheet1更改爲任何表格的名稱?代碼中有一條評論告訴你這樣做:) – 2013-07-15 14:45:34

+0

哎呀,對不起.. :) – Wilco