Ⅰ 急求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是怎麼記錄下來的,就知道如何編寫代碼了。