【问题标题】:Excel is copying all data even if the Autofilter criteria matches no data entry即使自动筛选条件不匹配任何数据条目,Excel 也会复制所有数据
【发布时间】:2013-07-13 02:06:58
【问题描述】:

大家下午好,

我是新来的,对 VBA 有一定的了解,所以如果我的术语可能不正确,请原谅。

我有一个 excel 文件,其中包含我编写的几个宏。主宏根据我在同一工作簿中单独工作表上的单元格中键入的条件将自动过滤器应用于我的所有数据。过滤器工作正常,如果指定的条件与我的数据中的记录匹配,则该数据将被复制并粘贴到单独的工作表中。 然而,不幸的是,如果我输入数据中不存在的标准,excel/VBA 会复制我的所有数据(7000 条记录中的每一条)并将整个数据粘贴到单独的工作表中,尽管实际上没有找到结果。我希望您能够就如何克服这一点以及使用什么代码使过滤器正常工作给我建议。

基本上我想要的是,如果过滤器无法匹配任何数据,则不会复制/粘贴任何数据。我的宏检查了几个条件(总共 8 个),然后应用了自动过滤器。我不知道我是否需要一个代码并将其添加到每个条件的每个代码行中,或者最后只添加一个。

感谢您的帮助!

【问题讨论】:

    标签: xml vba autofilter


    【解决方案1】:

    我会通过比较表中的行数与过滤后的表中的行数来检查过滤器是否产生任何结果/行。

    'assuming the table starts from A1,
    MsgBox Range("A1").CurrentRegion.Rows.Count
    'confirms the number of rows in the table.
    'After trying AutoFilter,
    MsgBox ActiveSheet.AutoFilter.Range.Columns(1).SpecialCells(xlCellTypeVisible).Count
    'confirms the number of filtered rows.
    

    将这两个值存储在变量中并进行比较,或者只检查第二个值是否为 1(标题行)。如果是一个,请不要尝试复制。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-04
      • 2019-11-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-09
      相关资源
      最近更新 更多