【问题标题】:Sort excel columns across sheets跨工作表对 Excel 列进行排序
【发布时间】:2014-08-13 19:17:31
【问题描述】:

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

【问题讨论】:

  • 通过“排序......手动”你的意思是例如'排序的A列降序,然后B列升序,然后C列降序......'?如果是这样,除非您记录了每个过滤器的宏设置,否则可能没有更快的方法来做到这一点,除非您将其自动化(例如 vba)。
  • 我的意思是我按照我想要的顺序剪切和粘贴列。
  • 第一行的列标题,对吧?其中有多少(列)?
  • 是第 1 行和 200 列
  • @kittels 下次地址消息使用@Username,这样可以很容易地跟踪通信。希望我的脚本能帮到你。告诉我

标签: vba excel


【解决方案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

【讨论】:

    【解决方案2】:

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

    1. 打开第二张纸
    2. 点击record macro,任意命名
    3. 在录制时,在第二张纸中按您想要的顺序剪切/插入列
    4. 完成后,点击stop recording

    现在您有了一个可以打开其余页面的宏,它会重复您的重新排序。打开每个工作表并单击查看宏,然后运行您刚刚创建的工作表。如果你保存文件,它也会保存宏。

    编辑:@horaciux 的精彩观点,请务必在运行宏之前保存整个工作簿,因为没有撤消操作。

    【讨论】:

    • 确保在运行宏之前保存整个工作簿。没有撤消。
    • 我应该先记录,因为我有 200 列。所以寻找更快的东西。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-02-07
    • 2019-11-21
    • 1970-01-01
    • 2015-02-18
    • 2015-09-02
    • 2016-03-30
    • 2017-08-05
    相关资源
    最近更新 更多