【问题标题】:VBA: How to refer to columns using table headings so I can use that column in a cell referenceVBA:如何使用表格标题引用列,以便我可以在单元格引用中使用该列
【发布时间】:2014-02-21 04:00:05
【问题描述】:

所以基本上我有一个代码,如果它们有两列满足某些条件,则旨在查找和删除行。但是,这些列在表中的位置通常是可变的,因此我需要使用它们的表头名称来引用这两列。我有一种使用列号来查找和删除这些行的方法,但将其调整为列名并没有以同样的方式工作。如何调整我的代码以使其正常工作?我什至可以使用 FIND 函数吗? 提前致谢!

代码:

 1 Sub try()
 2    
 3 ThisWorkbook.Sheets("report").Activate
 4 Last1 = Cells(Rows.Count, "A").End(xlUp).Row     
 5 For p = Last1 To 1 Step -1
 6   If (Cells(p, "Table1[type]").Text) = "active" And (Cells(p, "Table1[data]")) <> "" Then
 7       Cells(p, "A").EntireRow.Delete
 8   End If
 9 Next p
10 End Sub    

【问题讨论】:

    标签: excel vba


    【解决方案1】:

    试试这个:

    Sub try()
        Dim Last1 As Long
        Dim colType As Integer, colData As Integer
    
        With ThisWorkbook.Sheets("report")
            Last1 = .Cells(.Rows.Count, "A").End(xlUp).Row
            colType = .Range("Table1[type]").Column
            colData = .Range("Table1[data]").Column
            For p = Last1 To 1 Step -1            
                If .Cells(p, colType) = "active" And .Cells(p, colData) <> "" Then
                    .Cells(p, "A").EntireRow.Delete
                End If
            Next p
        End With
    End Sub
    

    顺便说一句,如果你的表有很多行,下一个代码会更高效:

    Sub test2()
        Dim rng As Range
        Dim i As Long
    
        With ThisWorkbook.Sheets("report").ListObjects("Table1")
            .Range.AutoFilter
            .Range.AutoFilter Field:=.ListColumns("type").Index, _
                Criteria1:="=active"
            .Range.AutoFilter Field:=.ListColumns("data").Index, _
                Criteria1:="<>"
            .Range.Offset(1).EntireRow.Delete
            .Range.AutoFilter
        End With
    End Sub
    

    【讨论】:

    • 效果很好,谢谢!我认为它是这样的,但我不知道要为我的列标注什么尺寸,因为 Dim blank as Column 不是一个东西。
    • @SRoy,请参阅我的更新答案。如果您的表包含许多行,则代码会更有效:)
    • 非常感谢,编辑后的数据比我拥有的大量数据要快得多,但唯一的问题是,如果没有任何要删除的内容或任何符合这些特定条件的内容,我会保留在“For i=rng.Areas...”行出现错误。关于如何摆脱它的任何建议?
    • 非常感谢!你能向我解释一下为什么这个方法有效,而另一个无效吗?
    • @SRoy,我不明白为什么以前的代码不适合你..btw,很高兴它现在可以工作了:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-15
    • 2013-11-04
    • 1970-01-01
    • 2015-01-09
    • 1970-01-01
    • 2022-09-24
    相关资源
    最近更新 更多