在Excel中如何利用VBA实现(符合条件)指定(空)行列的批量删除
2011-12-20 21:26阅读:
要使用VBA,首先打开你的Excel电子表格,然后将Microsoft Visual
Basic窗口打开,这样才能使用VBA代码!
方法是:在Excel中直接按下组合键Alt+F11即可打开VB窗口,倘若VB默认没有打开代码窗口,请执行操作:“视图”→“代码窗口”即可!
好了,环境都设置好了,下面来学习如题所示的操作吧!
代码1—删除第8个单元格为空的行,范围从1行到88行:
----------------------------------------------------------
Sub DeleteEmptyRow '删除指定的单元格为空的行
Dim i As Integer
For i = 88 To 1 Step -1
If Cells(i, 8) = '' Then
Sheets('sheet1').Rows(i).Delete
End If
Next i
End Sub
----------------------------------------------------------
代码解释:
For i = 88 To 1 Step -1 '循环语句,从第88行一直检查到第1行
If Cells(i, 8) = ''
Then '如果当前行的第8列的值为空值,那么就删除该行!i是变量,随着循环而变,其值从88逐渐减小到1
代码2—删除第6个单元格为空的列,范围从1列到66列:
----------------------------------------------------------
Sub DeleteEmptyColmn() '删除指定的单元格为空的列
Dim i As Integer
For i = 66 To 1 Step -1
If Cells(i, 6) = '' Then
Sheets('sheet1').Co
lumns(i).Delete
End If
Next i
End Sub
----------------------------------------------------------
代码解释:与上面的代码类似,不再解释!
知识扩展:
以上两种代码仅删除sheet1工作表满足条件的空行空列,如果要一次性删除多个工作表的满足条件的空行和空列呢?
同样道理,只要再代码外面再使用一个循环即可!
----------------------------------------------------------
Sub DeleteEmptyRowAndColmn() '删除指定的单元格为空的行
Dim i As Integer
For j = 1 To 3
For i = 88 To 1 Step -1
If Cells(i, 6) = '' Then
Sheets(j).Columns(i).Delete
End If
Next i
Next j
End Sub
---------------------------------------------------------
代码功能,批量删除当前工作薄从1到3共三个工作表,并且第6个单元格为空的列!
如果您的工作薄有更多的工作表,无论名称如何,使用工作表的序号Sheets(j)即可删除,适当改变j的值即可满足您的要求!
自己编写的脚本
Dim i As Integer
Dim AA As Integer
For i = 1 To 466 Step 1
A = Cells(i, 6) * 1000 Mod 2
If A = 1 Then
Sheets('sheet4').Rows(i).Delete
End If
Next i
End Sub