我需要获取 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
这将循环遍历所用范围内的每一列,检查列中是否有任何非空白单元格,如果没有,则删除整个列。希望对您有所帮助。