【问题标题】:Microsoft Excel invert columns order with VBAMicrosoft Excel 使用 VBA 反转列顺序
【发布时间】:2014-07-03 01:48:19
【问题描述】:

我有一个包含日期列的大表:1 january, 2 january, 3 january ...
但现在重要的是不要滚动正确的大数据原因。

我的想法是反转列:27 june, 26 june ... 1 january
然后在左侧粘贴新日期的列之后。

是否有任何工具可以在默认 MS Excel 或 VBA 中反转列?

【问题讨论】:

  • 复制它,粘贴特殊并转置,按您的列排序,然后复制/转置回来。
  • 谢谢!不是理想的方式,但有效。我认为 VBA 可以做到这一点,你看过一些 VBA 脚本库吗?
  • @SergeySenkov 你试过我的答案了吗?
  • sorting across sheets in excel 的可能重复项

标签: vba excel


【解决方案1】:

您可以使用先前接受的关于跨工作表对列进行排序的答案中的脚本: Sort excel columns across sheets

首先在工作簿中创建一个新工作表。然后按所需顺序添加带有日期的列标题:6 月 27 日... 6 月 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

【讨论】:

  • @SergeySenkov 它对你有用吗?你能正式接受这个答案吗?
猜你喜欢
  • 2015-03-05
  • 1970-01-01
  • 2018-04-17
  • 1970-01-01
  • 2022-12-12
  • 1970-01-01
  • 1970-01-01
  • 2012-10-17
  • 1970-01-01
相关资源
最近更新 更多