【问题标题】:Difference between filtering range and table过滤范围和表格的区别
【发布时间】:2018-12-01 01:34:24
【问题描述】:

有人可以解释为什么过滤范围和表格之间存在差异吗?我得到了两者之间的区别,但我不明白为什么范围过滤器在格式化为表格时无法过滤基础数据。

由于差异,我在过滤文件时遇到了问题。我正在合并 x 个具有相同标题的用户文件。但是,有些人(非常感谢,大厅对面的查尔斯)决定将表格格式化为导致问题的表格。

是否有一种通用的方法(或更有效的方法)来过滤独立于格式的数据?例如,我尝试在 Col A 中过滤文本“NORAM”,然后将可见单元格复制/粘贴到其他地方。

我需要这样做吗?

If Range("A1") is range Then
    Filter Range("A1") with range method ("NORAM")
    Copy Visible Cells
    Paste to Destination
Else
    Filter Range("A1") with table method ("NORAM")
    Copy Visible Cells
    Paste to Destination
End If

或者有没有办法做这样的事情,它独立于范围或表格?

Range("A1") filter range regardless of format ("NORAM")
Copy Visible Cells
Paste to Destination

复制或粘贴数据我不需要帮助。以上只是通用步骤。我希望看到过滤范围、表格的最有效方法,并希望有一种过滤两者的方法,而不管格式如何。

【问题讨论】:

  • 使用第一种情况,If Range("A1") is range 应该总是返回 true。尝试测试工作表是否包含表格对象。
  • 这不是字面意思,只是强调它不是表格格式。很抱歉那里的混乱,好建议

标签: vba excel filtering


【解决方案1】:

我不确定您遇到了什么错误,但这里有一个快速过滤器,已在表格 (Sheet1) 和未格式化为表格的范围 (Sheet2) 上进行了测试。

Option Explicit

Private Sub FilterTableOrRange(ws As Worksheet)
    Dim lastRow As Long, lastCol As Long

    With ws
        lastRow = .Cells(.Rows.Count, 1).End(xlUp).Row
        lastCol = .Cells(1, .Columns.Count).End(xlToLeft).Column

        .Range(.Cells(1, 1), .Cells(lastRow, lastCol)).AutoFilter _
            Field:=1, Criteria1:="NORAM"
    End With
End Sub

Sub Master()
    FilterTableOrRange Sheets("Sheet1")
    FilterTableOrRange Sheets("Sheet2")
End Sub

如果这没有帮助,请具体说明您遇到的问题。

【讨论】:

  • 嗯。因此,无论数据的格式如何(这是我想知道的),这种方法都有效。我见过过滤表格的方法与过滤范围不同,这让我相信这些方法是区分大小写的(我的意思是范围或表格)。这意味着我的问题不在于过滤。也许它是从需要不同方法的表格/范围中复制可见单元格?不管怎样,这个问题在这里是题外话,所以我会进一步研究它,如果我无法弄清楚,我会发布一个新问题!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-22
  • 1970-01-01
  • 1970-01-01
  • 2019-07-08
  • 2021-03-28
  • 2015-03-06
相关资源
最近更新 更多