我正在尝试将我们的调度软件的输出用于电视台,并在给定时间内删除任何内容。不幸的是,调度软件的输出为时间创建了一个文本字段,而不是一个可以按时间格式化的字段。十多年来我没有做过任何真正的编程,这让我很沮丧。以下是工作表前几行的示例 - 每月的每一天都包含每个程序的条目,从6:00a到第二天的5:30a。
我到目前为止的代码是:
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
答案 0 :(得分:1)
使用与时间相似的文本数组并与之匹配。
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
答案 1 :(得分:1)
您可以使用Autofilter():
@receiver(pre_save, sender=Animal)
def animal_create_update(sender,instance, **kwargs):
print(instance.categories.all())
答案 2 :(得分:0)
您不会在代码中说明您的具体问题,但我可以告诉您一些问题。
1)这是无效的语法Goto ActiveSheet.Cells(j, m)
。 VBA中有GoTo
语句,但仅在绝对必要时使用。 (这种情况不需要它)。
2)不要依赖ActiveSheet
。而是直接引用您想要使用的选定工作表。
3)您实际上从未真正定义rng
,因此它毫无意义,您的代码将始终绕过范围。在模块顶部使用Option Explicit
有助于避免此问题。
4)使用活动细胞也很危险,可能会产生意想不到的后果。在您的情况下,它将一遍又一遍地删除相同的单元格,因为您从未激活任何其他单元格。它不需要。
请参阅下面的代码。它还检查行删除并稍后加载到一个删除语句的范围内(这将比逐行删除更快,并且不需要向后循环)。
Option Explicit
Sub delete_extraneous()
Dim mySheet As Worksheet
Set mySheet = Worksheets("mySheet") 'replace as needed
Dim lastRow As Long
lastRow = mySheet.Cells(mySheet.Rows.Count, 1).End(xlUp).Row
Dim m As Long
For m = 1 To lastRow
Select Case mySheet.Cells(m, 3).Value 'check each row against column C
Case Is = "6:30a", "7:00a", "7:30a", "8:00a", "8:30a", "9:00a", "9:30a", "10:00a", "10:30a", "11:00a", "11:30a"
Dim deleteRng As Range
If deleteRng Is Nothing Then
Set deleteRng = mySheet.Cells(m, 3)
Else
Set deleteRng = Union(deleteRng, mySheet.Cells(m, 3))
End If
End Select
Next
deleteRng.EntireRow.Delete
End Sub