乔山办公网我们一直在努力
您的位置:乔山办公网 > excel表格制作 > Excel中vba的代码,判断是否等于某值做整行删除:-excel判断行,excel判断

Excel中vba的代码,判断是否等于某值做整行删除:-excel判断行,excel判断

作者:乔山办公网日期:

返回目录:excel表格制作


EXCEL中公式会因增删行列而改变,是因为EXCEL系统试图让公式指向原来的位置。例如公式=A一*二,如果在第一行前插入了一行,那么公式会变为=A二*二,因为公式变化后的A二正是插入行之前的A一;再如公式=SUM(A一:A一0),如果在第一列前插入了一列,那么公式会变为=SUM(B一:B一0),因为公式变化后的B一:B一0区域正是插入行之前的A一:A一0区域。   有时候,我们不希望EXCEL的公式因为增删行列而变化,一般需要使用INDIRECT来实现。例如我希望公式=SUM(A一:A一0)永远是对A列的前一0行计算合计,无论插入删除行列都不要改变,那么我们的公式改为这样=SUM(INDIRECT("A一:A一0"))就可以了,因为引用的区域A一:A一0是一个字符串变量,EXCEL不知道是区域,所以不会因为增删行列而改变

VBA删除行

通常zd是从下往上查找目标值进行删除

这样才会不会误删

Sub test()
For i = 2000 To 1 step -1
If Range("AQ" & i).Value = "0"  or Range("AQ" & i).text = "#REF!" Then
    Rows(i & ":" & i).Delete Shift:=xlUp
End If
Next
End Sub

也不能说人家不对,copy提问者一开始就说要自动的,如果真的要手动删除,就没必要拿到百度上来问了。

把下列代码复制过去,运行一下就行了,此代码是基于Sheet1的A列中的单元格为空时删除行的,而且只考虑20行,多的话,可以将20改大一些,除非你真的有几万行的数据,否则不要在整列中做循环,会影响系统运行的。
还想更自动的话,可以把此代码放在工作簿打开事件、关闭事件,或工作表事件中去。
Sub DelBlank()
For i = 20 To 1 Step = -1
If Sheet1.Cells(i, 1) = "" Then
Rows(i).Delete
End If
Next i
End Sub

对,你说得没错。在连续两个都是空行的时候,就会存在这样的问题,还是有的空行删不了。只有多运行一两遍代码了。
不过,我已经修改了一下代码,从后往前循环,就没有问题了。

EXCEL中公式会因增删行列而改变,是因为EXCEL系统试图让公式指向原来的位置。例如公式=A一*二,如果在第一行前插入了一行,那么公式会变为=A二*二,因为公式变化后的A二正是插入行之前的A一;再如公式=SUM(A一:A一0),如果在第一列前插入了一列,那么公式会变为=SUM(B一:B一0),因为公式变化后的B一:B一0区域正是插入行之前的A一:A一0区域。   有时候,我们不希望EXCEL的公式因为增删行列而变化,一般需要使用INDIRECT来实现。例如我希望公式=SUM(A一:A一0)永远是对A列的前一0行计算合计,无论插入删除行列都不要改变,那么我们的公式改为这样=SUM(INDIRECT("A一:A一0"))就可以了,因为引用的区域A一:A一0是一个字符串变量,EXCEL不知道是区域,所以不会因为增删行列而改变

相关阅读

关键词不能为空

ppt怎么做_excel表格制作_office365_word文档_365办公网