本文主要是介绍快速删除不规则空列,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
实例需求:由于原始数据文件不规范,导入Excel的数据存在空列(例如A列),并且位置不固定,现需要使用代码删除空列。
示例代码如下。
Sub Demo1()For col = Cells(1, Columns.Count).End(xlToLeft).Column To 1 Step -1If Len(Trim(Cells(1, col))) = 0 Then Columns(col).DeleteNext
End Sub
【代码解析】
凡是涉及删除操作的代码一定要从后向前,对于删除列来说就是从右向左循环,否则会出现遗漏的问题。
第2行代码中Cells(1, Columns.Count)
为第一行最后一个单元格,由于不同Excel版本的列数可能不同,此代码具有良好的兼容性。
End(xlToLeft).Column
可以获取最后一列的列号。
虽然是需求是删除空列,但是根据数据的展现情况,并不需要去统计整列有是全部为空单元,第3行代码判断每列的第1行的单元格,如果为空,则删除该列。
整个代码实现思路可以说相当直截了当,但是并不是最佳实现方案,首先循环判断,其次多次访问单元格,然后逐列删除,这些都是影响速度和性能的问题。
最佳实现方案,核心代码只有一行。
Sub Demo2()Range([a1], Cells(1, Columns.Count).End(xlToLeft)).SpecialCells(xlCellTypeBlanks).EntireColumn.Delete
End Sub
【代码解析】
Cells(1, Columns.Count).End(xlToLeft)
代码已经讲解过了,这里不再赘述。
SpecialCells(xlCellTypeBlanks)
用于定义Range对象中的空单元格。
EntireColumn
用于将Range拓展到整列。
多掌握一些VBA方法,有很多问题可以轻松解决。
这篇关于快速删除不规则空列的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!