我有一个关于在其他工作表中引用单元格的问题。 我在VBA中得到了这段代码:
如果Application.CountIf(.Rows(Lrow),'8000')= 0且Application.CountIf(.Rows(Lrow),'9000'))= 0则.Rows(Lrow).Delete
我可以删除没有单词8000和9000的任何行。 但是,由于将来会有更新,我如何调整代码以使excel执行的值可以是“DYNAMIC”(即不是硬核) 比方说,如果我在SHEET 1中的单元格(17,2)处输入一个数字,那么我可以通过VBA查看单元格地址而不是SHEET 2中的“绝对值”吗?
感谢。
答案 0 :(得分:0)
您可以在已有的代码上方添加这几行。这假设你想要通过将它们输入单元格B17或B18来改变它们。
Dim lowerBound as Long, upperBound as Long
lowerBound = Sheet1.Range("B17").Value
upperBound = Sheet1.Range("B18").Value
然后用lowerBound替换'8000',用upperBound替换'9000'。
答案 1 :(得分:0)
您可以在源表中添加一列X,标题为“Condx for DELETE”,并使用表示DELETE条件的公式填充此列作为布尔值 - 就像您的情况一样:= NOT(OR = A2 = 8000, A2 = 9000))(假设值8000,9000等出现在A列中)
然后循环通过源表并删除列X为TRUE的所有记录。假设
Sub MySub()
Dim MyRange As Range, Idx As Integer, MyCondx As Integer
Set MyRange = ActiveSheet.[A1] ' represent source data as a range
Idx = 2 ' asuming one header row
MyCondx = 3 ' asuming condition is in 3rd column
Do While MyRange(Idx, 1) <> ""
If MyRange(Idx, MyCondx) Then
MyRange(Idx, 3).EntireRow.Delete
Else
Idx = Idx + 1
End If
Loop
End Sub
通过这种方式,您可以完全透明,无需硬编码,并且您可以非常灵活地不仅可以更改一组2个值,还可以指定为业务提供的任何条件。
希望有所帮助 - 祝你好运