Excel 引用其他工作表中的单元格。动态/可变

Excel 引用其他工作表中的单元格。动态/可变,excel,vba,Excel,Vba,我有一个关于在其他工作表中引用单元格的问题。 我在VBA中获得了以下代码: 如果Application.CountIf(.Rows(Lrow),'8000')=0,Application.CountIf(.Rows(Lrow),'9000')=0,则.Rows(Lrow).Delete 我可以删除任何没有8000和9000字的行。 但是,由于将来会有更新,我如何调整代码,使excel要执行的值可以是“动态的”(即不是硬核心的) 比如说,如果我在工作表1的单元格(17,2)中输入一个数字,我可以用

我有一个关于在其他工作表中引用单元格的问题。 我在VBA中获得了以下代码:

如果Application.CountIf(.Rows(Lrow),'8000')=0,Application.CountIf(.Rows(Lrow),'9000')=0,则.Rows(Lrow).Delete

我可以删除任何没有8000和9000字的行。 但是,由于将来会有更新,我如何调整代码,使excel要执行的值可以是“动态的”(即不是硬核心的) 比如说,如果我在工作表1的单元格(17,2)中输入一个数字,我可以用什么制作excel来查看单元格地址,而不是用VBA查看工作表2中的“绝对值”


谢谢

您可以在已有代码的上方添加这两行代码。这是假设您希望通过将数字输入单元格B17或B18来更改其中一个数字

Dim lowerBound as Long, upperBound as Long
lowerBound = Sheet1.Range("B17").Value
upperBound = Sheet1.Range("B18").Value

然后将中的“8000”替换为lowerBound,将“9000”替换为Upper Bound。

您可以在源工作表中添加一列X,标题为“Condx for DELETE”,并用一个表示删除条件的布尔值的公式填充此列,例如:=NOT(或(A2=8000,A2=9000))(a列中显示8000、9000等值)

然后循环遍历源表并删除列X为真的所有记录。粉碎

  • 您的源已在VBA中定义为范围对象(MyRange)
  • 第一行是标题行
  • 列表标题和结尾之间的第一列中没有空单元格
  • 在第3列中找到该条件
呼噜声可能是这样的

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
Sub MySub()
Dim MyRange作为范围,Idx作为整数,MyCondx作为整数
Set MyRange=ActiveSheet。[A1]”将源数据表示为一个范围
Idx=2'表示一个标题行
MyCondx=3'测量条件在第3列
当MyRange(Idx,1)”时执行此操作
如果是MyRange(Idx,MyCondx),则
MyRange(Idx,3).EntireRow.Delete
其他的
Idx=Idx+1
如果结束
环
端接头
通过这种方式,您可以实现完全透明,无需硬编码,并且您可以非常灵活地不仅更改一组2个值,还可以指定为业务服务的任何条件


希望这有帮助-祝你好运

你的意思是,它不是寻找8000或9000,而是寻找你在单元格中输入的值?