1
我想在Excel中完成一個小的VBA項目,目的是讓我比使用內置的過濾器/搜索選項更容易地過濾數據。基本上,我有一個表單,其中包含與數據標題相關的一些用戶輸入。對於要搜索的值,我有一個公差帶的輸入,例如輸入爲:標頭名稱;名義搜索值;公差。然後它會查找在該容差範圍內的所有數據行。VBA找到兩個其他人之間的任何值
下面是我希望循環運行並將每行復制到新工作表的代碼。我想將範圍「fc」設置爲等於在ssMin和ssMax之間找到的第一個單元格。我最好使用If塊嗎?
Private Function searchCells(ifc)
Dim ss As Integer
Dim fc As Range
Dim ssMax As Integer
Dim ssMin As Integer
ss = lstboxChannelList.List(ifc, 1)
ssMax = ss + lstboxChannelList.List(ifc, 2)
ssMin = ss - lstboxChannelList.List(ifc, 2)
Set fc = Cells.Find(What:=(ssMin <= ssMax), After:=ActiveCell, LookIn:=xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False)
fc.Select
End Function
你'什麼:=(ssMin <= ssMax)'幾乎可以肯定是相當於'什麼:= TRUE;(假定'ssMin'小於或等於'ssMax'),所以這種方法獲得了沒有工作。是的,使用循環來循環數據並測試每個單獨的單元格以查看它是否符合條件會更好。 (如果它只是一個你正在搜索的列,它**可能只用'Index'和'Match'操作就可以完成,但是,由於你的數據在整個工作表中的任何地方,我不認爲這對你來說是可能的。) – YowE3K
你也可以考慮從用戶表單中獲取輸入,並將其用作Excel簡單或高級過濾器的標準。比循環遍歷所有單元更快,並且仍然可以使用VBA完成以簡化設置標準。使用高級過濾器,您可以使用'CopyTo'參數。使用簡單過濾器,您可以在過濾後複製可見單元格。 –
謝謝,我今天將嘗試這些方法,看看我如何繼續,並希望在解決問題後發佈答案。 –