如何在Excel中筛选和复制数据?
我在excel工作表中有很多数据。对于计算,我想将此数据仅限于相关数据。即:筛选数据并将子集放入另一个工作表中。如何在Excel中筛选和复制数据?,excel,filter,Excel,Filter,我在excel工作表中有很多数据。对于计算,我想将此数据仅限于相关数据。即:筛选数据并将子集放入另一个工作表中。 相关数据是在给定最小值和最大值范围内的数据 例如: 假设我想过滤A列中1到2之间的值,过滤B列中0到1之间的值。结果应该是这样 A B C = Data 1 0 0 0 2 1 1 0 3 2 0 3 4 2 2 1 A B C = Result 1 1 1 0 2 2 0 3 有没有简单的解决方法? 事实上,我不过滤精确匹配显然使问题更加困难 提前谢谢 我有一个快速的V
相关数据是在给定最小值和最大值范围内的数据 例如:
假设我想过滤A列中1到2之间的值,过滤B列中0到1之间的值。结果应该是这样
A B C = Data
1 0 0 0
2 1 1 0
3 2 0 3
4 2 2 1
A B C = Result
1 1 1 0
2 2 0 3
有没有简单的解决方法?事实上,我不过滤精确匹配显然使问题更加困难
提前谢谢 我有一个快速的VBA程序,它可以做你想做的事情
Private Sub MultiFilter(DataRange As Range, CriteriaRange As Range, OutputRangeTL As Range)
Dim intRowCounter As Integer
Dim intColCounter As Integer
Dim varCurrentValue As Variant
Dim blnCriteriaError As Boolean
Dim rngOutputCurrent As Range
If CriteriaRange.Columns.Count <> DataRange.Columns.Count Then
Err.Raise Number:=513, Description:="CriteriaRange and DataRange must have same column count"
End If
If CriteriaRange.Rows.Count <> 2 Then
Err.Raise Number:=513, Description:="CriteriaRange must be of 2 rows"
End If
Set rngOutputCurrent = OutputRangeTL.Resize(1, DataRange.Columns.Count)
For intRowCounter = 1 To DataRange.Rows.Count
For intColCounter = 1 To DataRange.Columns.Count
varCurrentValue = DataRange.Cells(intRowCounter, intColCounter).Value
If Not (varCurrentValue >= CriteriaRange.Cells(1, intColCounter) _
And varCurrentValue <= CriteriaRange.Cells(2, intColCounter)) Then
''#i.e. criteria doesn't match
blnCriteriaError = True
Exit For
End If
Next intColCounter
If Not blnCriteriaError Then
''#i.e. matched all criteria
rngOutputCurrent.Value = DataRange.Resize(1).Offset(intRowCounter - 1).Value
Set rngOutputCurrent = rngOutputCurrent.Offset(1)
End If
blnCriteriaError = False
Next intRowCounter
End Sub
然后做:
Public Sub DoTheFilter()
MultiFilter Range("MyDataRange"), Range("MyCriteriaRange"), Range("MyOutputRangeTopLeft")
End Sub
CriteriaRange只是一个2行范围,给出每列的最小值和最大值
我敢肯定,这不是最优雅、最有效的方法,但我用它作为一种快速修复方法,因为我需要这样做一两次
如果您不习惯使用VBA代码,请告诉我,我确信我可以设法将其转换为工作表函数(如果您更改了条件,这还具有更新的附加优势…)
西蒙
Public Sub DoTheFilter()
MultiFilter Range("MyDataRange"), Range("MyCriteriaRange"), Range("MyOutputRangeTopLeft")
End Sub