使用简单的宏删除多个列

使用简单的宏删除多个列

我需要获取 TSPI 航班数据并删除大约 30-40 列,每个日志每小时大约包含 3600 行。删除后,我需要重新组织剩余的列。如果有的话,我想以最简单、最快的方式完成此操作。我不确定如何在这些论坛上发布 excel 数据示例。

我试过此代码,但出现运行时错误 9

Sub sbVBS_To_Delete_Specific_Multiple_Columns() Sheets("Sheet1").Range("A:B,H:L,P:Q,S:BJ").EntireColumn.Delete End Sub

嗯,我已经弄清楚了,该工作表的名称是 12-20-2016,所以必须将 sheet1 更改为 12-20-2016。

答案1

种类

可以对数据的列进行排序,而不仅仅是对行进行排序。假设第 1 行中有某种可用作排序键的标题,则可以执行以下操作:

1 按 Ctrl+End 转到最后使用的行和列

2 按 Shift+Ctrl+Home 选择第一个单元格和最后一个单元格之间的所有内容

3 进入数据 | 排序,打开排序界面

4 点击排序界面顶部的选项

5 在方向下,选择从左到右排序,然后单击确定

现在您可以选择按哪一行进行排序。选择包含要按其排序的值的行,然后单击“确定”。空白列将排到最后,然后可以忽略。

随时删除

这更多是为了将来参考,但选择整个列并删除它们可能比仅删除其内容更好。要做到这一点:

1 单击最顶部的列标题字母以选择整个列

2 右键单击​​列标题字母并选择删除,或转到主页选项卡 | 单元格组 | 删除 | 删除工作表列

编辑并添加:

正如所指出的,您确实在问题标题中请求了宏。虽然我描述的方法可以通过录制的宏自动执行,但这里有一个快速编写的宏,它将从使用的范围中删除任何完全空白的列。

Sub ClearEmpties()
    'Delete any entirely empty column in the workshee's used range

    Dim l As Long

    For l = ActiveSheet.UsedRange.Columns.Count To 1 Step -1
        If WorksheetFunction.CountA(Columns(l)) = 0 Then
            ActiveSheet.Columns(l).EntireColumn.Delete
        End If
    Next l

End Sub

这将循环遍历所用范围内的每一列,检查列中是否有任何非空白单元格,如果没有,则删除整个列。希望对您有所帮助。

相关内容