首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我想动态删除Excel行

我想动态删除Excel行
EN

Stack Overflow用户
提问于 2022-01-13 05:37:26
回答 1查看 197关注 0票数 0

我有一个Excel表,它在打开时宽6列(A) 13,000行。我想要写一个以单元格B1开头的宏,并检查它是否包含指定的字母(我将把它放入另一个未使用的单元格中)。如果是这样的话,我希望删除整行并将其他行向上移动。然后,宏应该以B1重新开始,并重复这个过程。如果B1不包含指定的字母,我想要依次检查C1-F1。如果其中任何一个包含指定的字母,我希望删除该行,将其他行向上移动,然后重新以B1开头。

如果单元格B1-F1中没有一个包含指定的字母,那么我希望将该行留在表中。然后,我想开始用B2 (或Bn)测试下一行,我想继续这个过程,直到我用数据在最后一行中检出Fn,并保留或删除了该行。

我想留给您的是一个表,它包含原始集合中的所有行,其中指定的字母出现在该行第2-6列中的任何单元格中。

我已经离开Excel宏20年了,所以确实需要一些关于如何实现行删除、行向上移动以及类似的硬部分的一些提示。

EN

回答 1

Stack Overflow用户

发布于 2022-01-13 08:25:19

最快的方法是建立一个多区域范围(即不会修改工作表的只读操作),然后在一个操作中删除它。

这个VBA例程应该这样做:

代码语言:javascript
复制
Public Sub DeleteRowsHavingCriterion()

    Dim J As Integer
    Dim nrows As Integer
    Dim ws As Worksheet
    Dim UsedRange As Range
    Dim toDeleteRange As Range
    Dim ThisRow As Range
    Dim DeleteThisRow As Boolean
    
    Set ws = Application.ActiveWorkbook.Worksheets("WorksheetToProcess")
    
    Set UsedRange = ws.UsedRange
    Let nrows = UsedRange.Rows.Count
    
    For J = nrows To 1 Step -1
    
        Set ThisRow = UsedRange.Rows(J).EntireRow
        
        DeleteThisRow = ( _
            (ThisRow.Cells(1, 2).Value = "LetterForColumnB") Or _
            (ThisRow.Cells(1, 3).Value = "LetterForColumnC") Or _
            (ThisRow.Cells(1, 4).Value = "LetterForColumnD") Or _
            (ThisRow.Cells(1, 5).Value = "LetterForColumnE") Or _
            (ThisRow.Cells(1, 6).Value = "LetterForColumnF") _
            )
    
        If (DeleteThisRow) Then
            If (toDeleteRange Is Nothing) Then
                Set toDeleteRange = ThisRow
            Else
                Set toDeleteRange = Union(toDeleteRange, ThisRow)
            End If
        End If
    Next J
    
    If (Not (toDeleteRange Is Nothing)) Then
        toDeleteRange.Delete (XlDeleteShiftDirection.xlShiftUp)
    End If

End Sub
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70691912

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档