删除具有特定单词的两行之间的所有行

时间:2014-05-19 09:23:09

标签: excel-vba vba excel

我们拥有大量excel表,其中有近40,000条与地质数据有关的记录。在该excel中,数据的最后一个参数(Criteria)将是“Color Table:”。

像:

Row 35  Color Table: (RGB with entries)
Row 36  0: 255,255,255,255
Row 37  1: 19,91,19,255
..
..
..
Row 58 **Files:** W:\01 GIS\AP_GSI_Map Survey_1  (***Starting of next data***)

从第59行开始,下一个数据的下一个参数将开始....再次,

Row 88  Colour Table: (2 Entries)
Row 89 0: 1,56,76
..
..
..
Row 102 Files: XXXXX

所以,我的问题是:如何删除具有文本的行之间的所有行:Color Table&其中包含文字Files:的行?

在VBA中了解一些基础知识。但不知道如何处理这个问题。

1 个答案:

答案 0 :(得分:0)

还无法测试,但我认为这应该可行:

Dim FoundCellColor As Range
Dim FoundCellFiles As Range
Dim colorArray (0) As Integer
Dim fileArray (0) As Integer
Dim i As Integer
Dim k As Integer

i = 0

Application.ScreenUpdating = False

' Set your range here, placeholder A:A
Set FoundCellColor = Range("A:A").Find(what:="Color Table")
Set FoundCellFiles = Range("A:A").Find(what:="Files")

Do Until FoundCellColor Is Nothing
    Redim Preserve colorArray(i)
    Redim Preserve fileArray(i)

    colorRow = FoundCellColor.Row
    fileRow = FoundCellFiles.Row

    colorArray(i) = colorRow
    fileArray(i) = fileRow

    Set FoundCellColor = Range("A:A").FindNext
    Set FoundCellFiles = Range("A:A").FindNext

    i = i + 1
Loop

For k = 0 To ThisWorkbook.Worksheets(1).UsedRange.Rows.Count

    If UBound(Filter(colorArray, k)) < 0 AND UBound(Filter(fileArray, k)) < 0 Then ThisWorkbook.Worksheets(1).Rows(k).Delete

Next

注意:我假设每个“颜色表”都有一个相应的“文件”部分。如果不是这种情况,则必须相应地调整代码。