在工作表中对excel列进行排序

时间:2014-06-23 16:48:19

标签: excel vba excel-vba

我有一张10张的excel文件。工作表都包含相同的列标题但数据不同。我手动对第一张纸进行了排序,现在我希望其他纸张中的所有列都与第一张纸的顺序相匹配,我不能手动完成所有这些,因为它会永远带我。如何根据第一个工作表顺序以相同的顺序在工作簿中创建所有列?我对VBA知之甚少,所以寻求一些帮助。

2 个答案:

答案 0 :(得分:1)

确保在运行宏之前保存整个工作簿。没有撤消。

希望这有帮助:

Sub ColumnRearrangement()
  'Horaciux 2014-06-23
Dim nextLabel As String
Dim currentLabel As String

Dim TotalPages As Integer
Dim TotalColumns As Integer

TotalPages = 10
TotalColumns = 200

'Insert a blank column in each page
For p = 2 To TotalPages
    Sheets(p).Select
    Columns("A:A").Select
    Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
    Range("B1").Select
Next

For c = TotalColumns To 1 Step -1
    Sheets(1).Select

    'Debug.Print "-" & Cells(1, c).Text & "-" & Str(c)
    nextLabel = Cells(1, c).Text
    Sheets(2).Select
    For oldCulumn = 2 To TotalColumns + 1

        'Debug.Print Cells(1, oldCulumn).Text & "-" & Str(oldCulumn)
        currentLabel = Cells(1, oldCulumn).Text

        If currentLabel = nextLabel Then
            'Debug.Print currentLabel & "-" & Str(oldCulumn)
            Exit For
        End If
    Next

    For p = 2 To TotalPages
        Sheets(p).Select
        Columns(oldCulumn).Select
        Selection.Cut
        Columns("A:A").Select
        Selection.Insert Shift:=xlToRight
    Next
Next

For p = 2 To TotalPages
    Sheets(p).Select
    Range("A1").Select
Next

End Sub

答案 1 :(得分:0)

如果您要重复对列进行重新排序,只要所有工作表中的列的顺序相同(错误),您就应该能够为此记录一个简单的宏。打开第二张纸(因为您已经安排了第一张纸),然后执行以下操作:

  1. 打开第二张
  2. 点击record macro,为其命名
  3. 在录制时,按照第二张中所需的顺序剪切/插入列
  4. 完成后,点击stop recording
  5. 现在您有一个宏可以打开其余页面,它将重复您的重新排序。打开每个工作表,然后单击“查看宏”,然后运行刚创建的工作表。如果您保存文件,它也将保存宏。

    编辑:@horaciux的优秀点,请确保在运行宏之前保存整个工作簿,因为没有撤消。