我正在尝试使用VBA按列的值过滤表,然后在工作表上输出一个新表(已过滤),但是新区域。注意我想要单元格引用范围数字。
在下面的假excel表上。我想过滤列'年龄'的范围。即过滤器 - >年龄 - > 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
答案 0 :(得分:0)
想出来。这适用于带数字的模型,而不是文本值。我认为代码中存在一些低效率,但确实有效。主要问题是它使用两张纸而不是在同一张纸上创建一个新表。 D2 / D3是单元格引用号,G是列。
Sub MaturityRange()
Dim ws As Worksheet 昏暗的模型作为工作表
设置ws = ThisWorkbook.Sheets(&#34;输出&#34;) Set One = ThisWorkbook.Sheets(&#34; Model&#34;)
如果不是IsEmpty(One.Range(&#34; D2&#34;))而不是IsEmpty(One.Range(&#34; D3&#34;))那么 用ws .Range(&#34; $ G $ 7:$ G $&#34;&amp; .Range(&#34; G&#34;&amp; Rows.Count).End(xlUp).Row).AutoFilter Field:= 1,_ 标准1:=&#34;&GT;&#34; &安培; One.Range(&#34; D2&#34;)。价值,_ 运算符:= xlAnd,_ Criteria2:=&#34;&LT;&#34; &安培; One.Range(&#34; D3&#34)。值 结束 结束如果
End Sub