在一个Excel中堆叠多列

时间:2018-07-26 11:43:46

标签: excel stack

我在一个文件中有多个工作表,来自不同的数据源。 我想将每张工作表中A列的数据堆叠到一列中。 没有空行,没有其他困难。 我可以使用记事本,但是我更喜欢excel中的解决方案。

我已经看到了类似问题的解决方案,但是它们有些不同,并且它认为是更简单的版本,并且可能具有更简单的解决方案(将易于实现)

感谢您的帮助。 米哈尔

1 个答案:

答案 0 :(得分:0)

这是适合您所需任务的代码,您只需要创建一个称为“输出”的新工作表或将代码的这一部分更改为所需的名称即可

Sub stackColumns()

    Dim wb As Workbook
    Dim recipe As Worksheet

    Set wb = ThisWorkbook
    Set recipe = wb.Worksheets("output")
    recipe.Range("A:C").ClearContents
    recipe.Cells(1, 1).Value = "stacked A-category"
    recipe.Cells(1, 2).Value = "stacked C-category"

    For Each w In wb.Sheets
        If w.Name <> recipe.Name Then
            For i = 2 To WorksheetFunction.Max(w.Cells(w.Rows.Count, 1).End(xlUp).Row, w.Cells(w.Rows.Count, 3).End(xlUp).Row)
                recipe.Cells(recipe.Cells(recipe.Rows.Count, 1).End(xlUp).Row + 1, 1).Value = w.Cells(i, 1).Value
                recipe.Cells(recipe.Cells(recipe.Rows.Count, 2).End(xlUp).Row + 1, 2).Value = w.Cells(i, 3).Value
            Next i
        End If
    Next w

End Sub