_1234 发表于 2008-8-9 14:40

【求助】Excel批量删除

对这个东东没什么研究啊,兄弟们帮忙。
怎么样把一个workbook里面的所有含有某个字符串的整行删掉呢?
可以用查找把他们全部找出来,但是不知道怎么删掉。。。
当然不是一个一个的删,几百行的,有什么script吗?我用的是excel 2003
多谢 :)

虫虫 发表于 2008-8-9 18:19

Sub del()

m = 20         '定义行数,即删除的范围
strdelete = "ffff"'定义删除操作中包含的字符串
ndellen = Len(strdelete)
For i = 1 To m
    'm代表行数
    For j = 1 To Len(Range("a" & i).Value)
      If Mid(Range("a" & i).Value, j, ndellen) = Trim(strdelete) Then
                strrow = Trim(Str(i)) + ":" + Trim(Str(i))
'                Rows("13:13").Select
                Rows(strrow).Select
                Selection.delete Shift:=xlUp
                If i > 1 Then
                  i = i - 1
                ElseIf i = 1 Then
                  i = 1
                End If
                Exit For
      End If
    Next
Next

End Sub

虫虫 发表于 2008-8-9 18:24

'                Rows("13:13").Select
这行是多余的,忘删除了;
没仔细调试;
使用情况:单列,即Range("a" & i).Value中“a”代表a列,根据情况修改;如果删除的搜索范围包含多列,那么上述代码不太合适,需要添加横向列的搜索,因此,代码只适合于单列。
你说的情况中删除范围workbook,是不是应该是sheet?xls文件叫workbook,里面的单个表叫sheet,上述代码使用于单个sheet,如果要在workbook的范围内删除,代码需要修改;
试试吧,有问题再改。

虫虫 发表于 2008-8-9 18:27

如果是office2007,直接选择列,定义条件格式就行了,即:把一列中包含某些字符串的单元格设置为带颜色背景,然后在按颜色排序,选定这些带颜色的行,删除就行了;
office2003中我不知道有没有捷径,暂先用代码吧

Drifter 发表于 2008-8-9 18:29

高手啊. 学习之.

虫虫 发表于 2008-8-9 18:33

Sub del()

m = 20         '定义行数,即删除的范围
strdelete = "ffff"'定义删除操作中包含的字符串
ndellen = Len(strdelete)
For i = 1 To m
    'm代表行数
    For j = 1 To Len(Range("a" & i).Value)
      If Mid(Range("a" & i).Value, j, ndellen) = Trim(strdelete) Then
                strrow = Trim(Str(i)) + ":" + Trim(Str(i))
                Rows(strrow).Select
                Selection.delete Shift:=xlUp
                If i > 1 Then
                  i = i - 1
                ElseIf i = 1 Then
                  i = 0
                End If
                Exit For
      End If
    Next
Next

End Sub

用这段吧

虫虫 发表于 2008-8-9 18:35

If i > 1 Then
                  i = i - 1
                ElseIf i = 1 Then
                  i = 0
                End If
这写的多余了点,直接>=1 就完了,再赚个nb

jiafushun 发表于 2008-8-9 18:45

虫虫真是高手,我看到这些代码就晕:-|

_1234 发表于 2008-8-9 22:39

多谢虫虫,看来要学学vba script了,要删除的字符串可以带通配符的吗?比如:“粤*澳”

_1234 发表于 2008-8-10 12:53

最后用这个蹩脚的宏搞定了。

Sub FindDelete()

    For i = 1 To 20
   
    Cells.find("粤*澳").EntireRow.Select
   
    Selection.delete Shift:=xlUp
   
    Next i
   
End Sub

会有run-time error,需要一个worksheet一个worksheet的运行。。。
有时间再完善吧,现交差了再说。

虫虫 发表于 2008-8-10 16:13

原来还是有捷径的,哈哈

吴书棋 发表于 2008-8-10 19:21

我这有一个批量删除的软件满好的能删除很多的垃圾

lqtol 发表于 2008-8-10 23:04

替换掉它行不行的.
页: [1]
查看完整版本: 【求助】Excel批量删除