【问题标题】:Filter Table by Column. (Filter --> Filter Between--> Number Range) --> Output New Table按列过滤表。 (过滤器-->过滤器之间-->数字范围)-->输出新表
【发布时间】:2018-04-07 03:57:38
【问题描述】:

我正在尝试使用 VBA 按列的值过滤表,然后在工作表上输出一个新表(已过滤),但是一个新区域。注意我想单元格引用范围号。

在下面的假excel表上。我想过滤“年龄”列的范围。 IE。过滤器 --> 年龄 --> 1-3 之间(单元格参考)。第一个表是原始数据。其次是我想使用 VBA 作为输出。

我尝试将下面的代码拟合到我想要的输出。它缺少与列本身无关的数据(取整列)

原始数据和所需输出的图像如下

Excel VBA, How to select rows based on data in a column?

Option Explicit
Sub tablefilter()
    Dim lastRow As Long, x As Long
    Dim lasColumn As Long, i = 4 
    Dim CopyRange As Range

    With Sheets("Sheet1")
        lastRow = .Range("A" & .Rows.Count).End(xlUp).Row

        For x = 1 To lastRow
            If Len(Trim(.Range("A" & x).Value)) 1<3 Then
                If CopyRange Is Nothing Then
                    Set CopyRange = .Rows(i)
                Else
                    Set CopyRange = Union(CopyRange, .Rows(x))
                End If
            End If
        Next
        If Not CopyRange Is Nothing Then
            CopyRange.Copy Sheets("Sheet2").Rows(1)
        End If
    End With

【问题讨论】:

  • 我不太确定你在这里问什么...请参考how-to-ask。如果您需要代码方面的帮助,我们非常愿意为您提供帮助,但是我们不提供代码
  • 行 If Len(Trim(.Range("A" &amp; x).Value)) 1&lt;3 Then 包含语法错误。您是否正在寻找文本长度小于 3 的行?如果是这样,请尝试If Len(Trim(.Range("A" &amp; x).Value)) &lt; 3 Then。

标签: vba excel filter


【解决方案1】:

想通了。这适用于带有数字而不是文本值的模型。我认为代码效率低下,但它确实有效。主要问题只是它使用两张纸而不是在同一张纸上创建一个新表格。 D2/D3 是单元格参考编号,G 是列。

子成熟度范围()

将 ws 调暗为工作表 将模型调暗为工作表

设置 ws = ThisWorkbook.Sheets("输出") 设置一 = ThisWorkbook.Sheets("Model")

If Not IsEmpty(One.Range("D2")) And Not IsEmpty(One.Range("D3")) Then 与 ws .Range("$G$7:$G$" & .Range("G" & Rows.Count).End(xlUp).Row).AutoFilter Field:=1, _ Criteria1:=">" & One.Range("D2").Value, _ 运算符:=xlAnd, _ Criteria2:="

结束子

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-04-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-23
    • 1970-01-01
    相关资源
    最近更新 更多