Ⅰ 急求VBA大神!如何用VBA,将表中符合条件的数据所在的行筛选出来
SubVBA()
OnErrorResumeNext'主要过滤掉值为0的情况
T=Sheets(1).UsedRange.Rows.Count
arr1=Sheets(1).Range("a1:m"&T)
Dimarr2
ReDimarr2(1ToT-1,1To15)
Forn=1ToUBound(arr2)
Fori=1To13
arr2(n,i)=(arr1(n+1,i)-arr1(n,i))/arr1(n,i)
Next
Next
Sheets(2).[a1:m1].Resize(UBound(arr2))=arr2
TT=Sheets(2).UsedRange.Rows.Count
Fori=1ToTT
Sheets(2).Range("o"&i)=Abs(Application.WorksheetFunction.Sum(Sheets(2).Range("a"&i&":m"&i)))
TTT=Sheets(3).UsedRange.Rows.Count
IfSheets(2).Range("o"&i)<0.3Then
Sheets(3).Range("a"&TTT+1&":m"&TTT+1)=Sheets(1).Range("a"&TTT+1&":m"&TTT+1)
Sheets(3).Range("a"&TTT+2&":o"&TTT+2)=Sheets(2).Range("a"&TTT+2&":o"&TTT+2)
EndIf
Next
EndSub
Ⅱ vba filter函数怎么用
filter英文意思是过滤器。顾名思义,这个函数大致功能就是过滤筛选,它是一个针对于数组的函数。有4个参数,分别是:sourcearray(待筛选数组),match(要查找的字符串),include(布尔值,是否包含匹配项),compare(字符查找对比方式)。下面用一个例子说明用法:
Subtest()
DimarrAsVariant,brrAsVariant,crrAsVariant
arr=Array(2,1,2,4,3,2)
brr=Filter(arr,2,False)
crr=Filter(arr,2,True)
MsgBox"过滤掉匹配项,保留其余项:"&vbCrLf&Join(brr,"_")
MsgBox"过滤掉不匹配项,保留匹配项目:"&vbCrLf&Join(crr,"_")
EndSub
'执行结果分别是:
'过滤掉匹配项,保留其余项:
'1_4_3
'过滤掉不匹配项,保留匹配项目:
'2_2_2
从上面的例子brr数组是从arr数组中过滤掉了2,保留其他非匹配项目组成的一个新数组,crr是从arr中去掉了非匹配项,保留了是2的项组成的新数组。所以filter第三个参数是关键,如果是false就不保留匹配向,是true就只保留匹配项,我们一般用的是像brr那种,crr这种现实中没什么意义,只是用ubound(crr)-lbound(crr)+1>0 这种来确定某个字符在某个数组中是否存在!
Ⅲ excel 怎么通过vba过滤出一行的重复的数据
^度友,你好,如图,公式:=MID(SUM(MID(A1&1/17,SMALL(FIND(ROW($1:$10)-1,A1&1/17),ROW($1:$10)),1)/10^ROW($1:$10)),3,COUNT(FIND(ROW($1:$10)-1,A1)))
如果是2016版本的,支持TEXTJOIN的话,公式:=TEXTJOIN("",1,IF(ISNUMBER(FIND(ROW($1:$10)-1,A1)),ROW($1:$10)-1,""))
数组公式,需要shift+ctrl+enter三键结束
Ⅳ vba 用autofilter筛选不符合条件的值
假定左边一列为A列,右边为B列,ActiveSheet.Range("$B$2:$B$100").AutoFilter Field:=1, Criteria1:="<>#N/A", Operator:=xlAnd
最关键的就是这个过滤条件设置的写法: Criteria1:="<>#N/A", 稍作解析,<>不等于, #N/A不希望出现的选项。
简单办法:
用记录宏。首先用过滤,设置不等于#N/A, 再确认。停止记录宏以后看一下EXCEL是怎么记录下来的,就知道如何编写代码了。