簡體   English   中英

跨表格對Excel列進行排序

[英]Sort excel columns across sheets

我有一個10張Excel文件。 這些工作表都包含相同的列標題但數據不同。 我手動對第一張工作表進行了排序,現在我希望其他工作表中的所有列都與第一工作表的順序匹配,我無法手動完成所有工作,因為這將使我永遠。 如何基於第一張工作表的順序以相同的順序排列工作簿中的所有列? 我對VBA知之甚少,因此需要一些幫助。

在運行宏之前,請確保保存了整個工作簿。 沒有撤消。

希望這個幫助:

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. 打開第二張紙
  2. 單擊record macro ,給它命名
  3. 記錄時,在第二張工作表中按所需順序剪切/插入列
  4. 完成后,點擊stop recording

現在,您有了一個可以打開其余頁面的宏,它將重復您的重新排序。 打開每個工作表,然后單擊“查看宏”,然后運行剛剛創建的工作表。 如果保存文件,它將也保存宏。

編輯: @horaciux的要點 ,請確保在運行宏之前保存整個工作簿,因為沒有撤消操作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM