excel - VBA:从另一张表中获取引用值作为过滤条件

标签 excel vba

我有两张纸——“标准”和“临时”。

我想在标准表中应用过滤器,其中标准将从“临时”表的事件单元格中获取。我的下面的宏由于某种原因失败了。

Sub FilterTest1()
ActiveWorkbook.Sheets.Add After:=Worksheets(Worksheets.Count)
ActiveSheet.Name = "temporary"

ActiveSheet.[A:A].Value = Worksheets("Criteria").[A:A].Value

Cells.RemoveDuplicates Columns:=Array(1)

Range("A1").EntireRow.Delete

Dim B As Integer
B = Cells.CurrentRegion.Rows.Count

With Sheets("Temporary")
Selection.End(xlDown).Select
End With


With Sheets("Criteria")

.Range("$A:$B").AutoFilter
   .Range("$A:$B").AutoFilter field:=1, Criteria1:=Worksheets("temporary").ActiveCell.Value, Operator:=xlOr

End With

End Sub

宏以 a 结尾

run time error 438 "Object doesnt support this property or method.



什么是正确的方法?

添加更多信息:目标是一一更改标准。现在它应该选择 Temporary!A:A 中的最后一个事件单元格,但稍后我将在 Temporary!A:A 中向上偏移选择,并将每个事件单元格表作为过滤标准。

最佳答案

将 Temporary!A:A 中的最后一个值应用于 var 比依赖 Select 和 Selection 更容易。

但是,您的所有代码似乎都归结为 AutoFilter 将 Criteria!A:A 中的最后一个值作为过滤器。添加一个新工作表,复制 Criteria!A:A 中的值,删除重复项,然后选择 Temporary!A:A 中最后一个填充的单元格并没有改变它。如果您对 Temporary!A:A 中的数据进行了排序,它可能会发生变化,但您当前所做的任何事情都不会改变 Criteria!A:A 中填充的最后一个值的标准。

Sub FilterTest1()
    dim c as variant
    with workSheets("Criteria")
        c = .cells(.rows.count, "A").end(xlup).value
        .Range("A:B").AutoFilter  field:=1, Criteria1:=c
    End With
End Sub

关于excel - VBA:从另一张表中获取引用值作为过滤条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51130177/

相关文章:

excel - CLng 函数返回有趣的值

excel - .Range 和 .InsertShift 在新工作表上复制表格 : overwriting data

excel - 删除Excel表格的所有空白行的最快方法是什么?

excel - 当我已经使用 Workbooks.OpenText 打开它时关闭文本文件

Excel 组功能 - 插入行

excel - 使用 SAS 处理 Excel 中的大量列

javascript - 从表格导入 Excel 中的数据

excel - 加粗的前 50% 的总和值和值 => 50,000

excel - 链接到基于另一个单元格的外部工作簿

mysql - 直接从 SQL 查询加载 Excel 验证列表