-1

我所拥有的:我有很多数据组织在许多小表中(松散地说,不是“真正的”表),这些表一个接一个地放置,一列和下一列之间留有两列。这些“表格”都由列和可变数量的行组成。表格从单元格 A1 开始。因此,例如,第一个表占用列 A 到 F,第二个表占用列 I 到 N,依此类推。

我需要什么:我需要将所有这些表格放在另一个下方,以创建一个可导出到统计软件的数据库以进行进一步分析。我需要的脚本应该取第二个表并剪切(或复制)并将其粘贴到第一个表的下方,两者之间没有空白行。然后继续进行第三个并将其粘贴到第二个下方,依此类推。

我从来没有使用过 VBA,但我需要一些东西来自动化这个过程,因为手工操作需要很多天。我用 C++ 和 R 编写程序,所以如果你能给我一些指导,我可以尝试把它放在一个 VBA 脚本中。

非常感谢你。

4

1 回答 1

1

我已经复制了你的桌子,所以它看起来像这个

复制表

然后我写了这样的代码来完成 结尾

我认为这就是您要寻找的,这是代码

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
于 2013-07-15T14:01:39.290 回答