2013-07-15 185 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