订单栏表VBA

时间:2014-08-08 16:20:19

标签: excel vba excel-vba access-vba

我想重新排序来自多个表格中的所有列(在Excel中设置为表格),在同一个工作表中按下另一个列表。

这是一个例子,因此您可以更好地了解我目前拥有的内容:

表1

Col1  Col2  Col3  Col4  Col5
Data  Data  Data  Data  Data

表2

Col1  Col4  Col5  Col3  Col2
Data  Data  Data  Data  Data

表3(在此表中,我有一个我不需要的额外列)

Col3  Col1  Col2  Col5  Col4  Col6
Data  Data  Data  Data  Data  Data

期望的结果

Col1  Col2  Col3  Col4  Col5
Data  Data  Data  Data  Data
Data  Data  Data  Data  Data
Data  Data  Data  Data  Data

我的第一个解决方案是在Excel中创建一个宏,但我已经堆积了代码,因为我不是专家。我们的想法是创建一个数组并为每个表排序列。

Dim tbl As ListObject
Dim WS As Worksheet
Dim arrColOrder As Variant, ndx As Integer

arrColOrder = Array("Col1", "Col2", "Col3", "Col4", "Col5")

For ndx = LBound(arrColOrder) To UBound(arrColOrder)
  For Each WS In Worksheets
    For Each tbl In WS.ListObjects

这是代码的开始,但我真的不知道如何为每个表定义数组。

1 个答案:

答案 0 :(得分:1)

试试这个

 Sub CopyConcatenate()
    Dim ws As Worksheet
    Dim rng As Range

    '~~> Set this to the relevant worksheet
    Set ws = ThisWorkbook.Sheets("Sheet1")

    With ws
        '~~> Set your range
        Set rng = .Columns(x)' change x to the number column you want

        '~~> Cut the range
        rng.Cut

        '~~> Insert the range
        rng.Offset(5).Insert
    End With
End Sub

要删除列,您可以使用类似

的内容
Set Rng = ws.Columns(x)
Rng.Delete Shift:=xlToLeft