引用行或列后,用工作表对象的Delete(delete)方法删除行或列。该方法在4.3.11小节有详细介绍,请参阅。
删除单/多/不连续行和列
单行单列、多行多列和不连续行和列的删除,请参见4.4.5小节行列选择的内容,引用方式相同,把Select(select)方法换成Delete(delete)方法即可,不再赘述。
删除空行
删除空行可以有多种方法,下面介绍两种。
第1种是使用4.3.7小节介绍的SpecialCells方法,先找到空格,然后删除空格所在的行。
code.python
>>> sht.Columns("A:A").SpecialCells(constants.xlCellTypeBlanks).EntireRow.Delete()
第2种方法使用工作表函数,这里要用到后面介绍的Application对象,使用该对象的WorksheetFunction属性,继续引用其CountA方法。该方法的参数为工作表的行,如果行为空行,则返回0。据此可以删除所有空行。
code.python
>>> a= sht.UsedRange.Rows.Count
>>> for i in range(a,1,-1):
if app.WorksheetFunction.CountA(sht.Rows(i))==0:
sht.Rows(i).Delete()
删除重复行
删除重复行,首先要把重复行找出来。使用工作表函数COUNTIF可以找出重复行。图3-5中第1列是给定的数据,在单元格B1中添加公式"=COUNTIF($A$1:$A$7,A1)",下拉填充,结果如图中第2列所示,列中每个数据表示左侧数据重复的次数,大于1的即表示有重复。据此可以找出重复行。
图3-5 用COUNTIF函数查找重复行
编写如下代码,对工作表中第1列数据用COUNTIF函数进行判断,如果返回值大于1,表示为重复行,删除。
code.python
>>> a=sht.Cells(sht.Rows.Count, 1).End(constants.xlUp).Row
>>> for i in range(a,1,-1):
if app.WorksheetFunction.CountIf(sht.Columns(1), sht.Cells(i,1))>1:
sht.Rows(i).Delete()