【问题标题】:Excel VBA to stack columns in different sheetsExcel VBA在不同的工作表中堆叠列
【发布时间】:2018-12-09 01:42:42
【问题描述】:

我有一个 Excel 工作簿,里面有 2 张纸。两张表都有可以改变长度(行数)的表格。我希望能够让 VBA 在 sheet1 中获取 table1 并将其与 sheet2 上的 table2 对齐。

这就是棘手的地方。列不对齐。例如,sheet1 中的“公司”可能在 E 列中。但是,在 sheet2 中,它在 V 列中。列中也有空白。就数据而言,这是可以的,但它会使到达表列的末尾变得更加困难。

我知道我需要列出每一列的哪些列。在 sheet1 中有 36 列。在表 2 中有 49 个。这是完全可以接受的。

任何指导将不胜感激。手动执行此操作需要大量时间,我只是想加快速度。如果在 sheet3 上编译所有内容更容易,那很好。

这是我目前所拥有的,但它不喜欢堆叠部分。

Sub Stacker()

'Select Full Report Sheet
Sheets("Full Report").Select

'Find Notes column and copy
Cells.find(What:="Notes", After:=Range("A1"), _
LookIn:=xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows).EntireColumn.Copy

'Select Secondary Report sheet, column E and paste
Sheets("Secondary Report").Select
Range("E1").Select
ActiveSheet.Paste
Application.CutCopyMode = False

End Sub

谢谢

【问题讨论】:

  • “tables”、“Table1”和“Table2”是什么意思?这些是结构化(即 ListObject)表吗?
  • 表 1 中的所有列是否都出现在表 2 中?您是在复制表 1 中的所有列吗?
  • “堆栈”和“让 VBA 在 sheet1 中获取 table1 并将其与 sheet2 上的 table2 对齐”是什么意思?您是否试图让两个表格出现在同一页面上,并且所有共享列都在下一个上方排列?或者,您只是想重新排列它们所在的列并将每个表留在自己的工作表上还是......其他什么?
  • 您可以使用 powerquery 并附加表格。由于列没有变化,您可以对其中一个表进行列重新排序,以便排队(如果它们具有匹配的标题,则不确定 powerquery 是否甚至要求您执行此操作 - 所以请先尝试)您可能需要添加较短宽度表的虚拟列。同样,powerquery 可以为您处理这个问题,或者您可以使用它的列添加功能。
  • @Friendly_Neighborhood_BA 您如何像化名一样友好并回答您的问题产生的问题,和/或将答案标记为有帮助/已解决。

标签: vba excel


【解决方案1】:

我之前编写的代码可让您将单独表中的所有数据混合到一个表中,而不管列的顺序如何。见https://stackoverflow.com/a/47279374/2507160

我还建议尝试 PowerQuery 来做同样的事情。见https://stackoverflow.com/a/47170312/2507160

【讨论】:

    猜你喜欢
    • 2019-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多