vba - 在列中的每个单元格中查找特定内容,并在某些情况下删除该行

标签 vba excel

我正在尝试获取电视台调度软件的输出,并在给定时间内删除任何内容。不幸的是,调度软件的输出创建了一个时间文本字段,而不是一个可以格式化为时间的字段。我十多年来没有做过任何真正的编程,这让我很沮丧。以下是该表前几行的示例 - 每月的每一天都包含从上午 6:00 到第二天上午 5:30 的每个程序的条目。

enter image description here

到目前为止我得到的代码是:

Sub delete_extraneous()

Dim rng As Range
Dim j As Integer
Dim m As Integer

m = 1
j = 3

Goto ActiveSheet.Cells(j, m)

With ActiveSheet
    lastRow = .Cells(.Rows.Count, "A").End(xlUp).Row
End With

For m = 1 To lastRow
    If rng = "6:30a" Or "7:00a" Or "7:30a" Or "8:00a" Or "8:30a" Or "9:00a" Or "9:30a" Or "10:00a" Or "10:30a" Or "11:00a" Or "11:30a" Then
        ActiveCell.EntireRow.Delete Shift:=xlShiftUp
    End If
Next m

End Sub

最佳答案

使用看起来像时间的文本数组并与之匹配。

Sub delete_extraneous()
    dim tms as variant, lastRow as long

    tms = array("6:30a", "7:00a", "7:30a", "8:00a", "8:30a", "9:00a", "9:30a", _
                "10:00a", "10:30a", "11:00a", "11:30a")
    with activesheet
        lastRow = .Cells(.Rows.Count, "C").End(xlUp).Row

        For m = lastRow to 1 step-1
            If not iserror(application.match(.Cells(m, "C").value, tms, 0))  Then
                .rows(m).EntireRow.Delete Shift:=xlShiftUp
            End If
        Next m
        .
    end with
end sub

关于vba - 在列中的每个单元格中查找特定内容,并在某些情况下删除该行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49436888/

相关文章:

excel - 使用 VBA Excel/Outlook 每个工作日发送刷新的 Excel 工作表

python-3.x - Solidworks 宏实现不适用于 Python

excel - 通过 VBA 在 Excel 中节省时间过长

excel - 在excel VBA中,如何检索单元格内的文本格式

excel - 为什么 JExcel 在分配的货币符号 (£) 上强制使用单元格的正前缀 ($)?

excel - 匹配条件后阻止 Excel 更新公式

c# - EPPlus中合并单元格的自动调整行高

Excel 开始日期范围在 365 天内

sql - 如何使用 SQL 比较序列?

excel - 隐藏列的列宽属性