删除excel中包含列出的数字的行

时间:2009-11-02 11:29:12

标签: excel vbscript automation

我在Excel表格中有一个数字列表。即。一列约20行数字。让我们说它的被叫列表A然后我有一些多行多列Excel表2,其中列C可能包含一些列表A的数字。 如何删除excel sheet2中包含列C中的列表A数字的行

2 个答案:

答案 0 :(得分:3)

实际上无法通过ADO(http://support.microsoft.com/kb/257819)从Excel中删除行,但是,您可以创建一个不包含要删除的行的新工作表。您可能会发现列标题和命名范围更容易。下面是一个不包含列标题或范围的示例,因此SQL将各个列称为F n (默认),将工作表称为[Sheet n $]

strFile = Workbooks(1).FullName
strCon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & strFile _
    & ";Extended Properties=""Excel 8.0;HDR=No;IMEX=1"";"

Set cn = CreateObject("ADODB.Connection")
cn.Open strCon
Set rs = CreateObject("ADODB.Recordset")

strSQL = "SELECT x.F1, x.F2, x.F3, x.F4, x.F5 FROM [Sheet1$] As x " _
       & "LEFT JOIN " _
       & "[Sheet2$] As y " _
       & "ON x.F3=y.F1 " _
       & "WHERE y.F1 Is Null"

rs.Open strSQL, cn

For i = 0 To rs.Fields.Count - 1
    Sheets("Sheet3").Cells(1, i + 1) = rs.Fields(i).Name
Next

Sheets("Sheet3").Cells(2, 1).CopyFromRecordset rs

答案 1 :(得分:0)

非VBA方式是:

  • 选择列表A中的数字
  • 在Excel 2003中创建这些数字的新自定义列表:Tools> Options然后Custom Lists
  • 转到sheet2并使用新的自定义列表对列C进行排序:Data> SortOptions,然后将First key sort order更改为新的自定义列表

所有列表A行现在将在列表的顶部(如果排序降序排在底部)组合在一起,然后您可以删除它们