繁体   English   中英

Excel:VBA删除行组

[英]Excel: VBA to delete group of rows

我有一个Excel文件,其中包含一列数据。 就像是:

21/07/2017
DEF
GHI
Field 7
SOMETHING HERE
MORE TEXT
21/07/2017
DEF
GHI
Field 7

重复数千次。 我正在寻找的是介于21/07/2017之间的所有行,包括要删除的字段7和要向上移动的行。

我已经尝试了几件事,但现在回到了一块空白的画布上! 有什么提示吗?

谢谢

我尝试过的代码

我收到溢出错误

Sub deleteRows()
    Dim sh As Worksheet
    Dim rw As Range
    Dim RowCount As Integer

    RowCount = 1
    Application.DisplayAlerts = False
    Set sh = ActiveSheet
    For Each rw In sh.Rows

      If sh.Cells(rw.Row, 1).Value = "21/07/2017" Then
        a = RowCount
      End If
      If sh.Cells(rw.Row, 1).Value = "Field 7" Then
        b = RowCount
        Rows(a & ":" & b).Delete
      End If

      RowCount = RowCount + 1

    Next rw
End Sub

这只会循环成对存在,并删除整个块。

循环第一次在剩余值中都找不到的情况下结束。

Sub myDelete()
Dim str1 As string
Dim str2 As String
Dim rng As Range
Dim ws As Worksheet
Dim i As Long
Dim j As Long

str1 = "21/07/2017"
str2 = "Field 7"

Set ws = Worksheets("Sheet18") 'change to your worksheet
Set rng = ws.Range("A:A")


Do
    i = 0: j = 0
    On Error Resume Next
        i = Application.WorksheetFunction.Match(str1, rng, 0)
        j = Application.WorksheetFunction.Match(str2, rng, 0)
    On Error GoTo 0
    If i > 0 And j > 0 Then
        ws.Rows(i & ":" & j).Delete
    End If
Loop Until i = 0 Or j = 0
End Sub

如果您的日期是真实日期,则将str1更改为Double:

Dim str1 As Double

然后将其分配为:

str1 = CDbl(DateSerial(2017, 7, 21))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM