Excelで小さなVBAプロジェクトを完成しようとしていますが、フィルタ/検索オプションを組み込むよりも簡単にデータをフィルタリングできます。基本的には、データヘッダーに関連したユーザー入力を持つフォームがあります。私は、検索される値に許容範囲の入力を持っています。例えば、入力は次のようになります。名目上の検索値。耐性。その後、その許容範囲内のデータのすべての行が検索されます。VBA他の2つの間で値を見つける
各行を実行して新しいシートにコピーするためにループしたいコードは次のとおりです。範囲 "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
あなた '何:そのアプローチが勝ったので= true'を、(' ssMin'がより小さいか 'ssMax'に等しいと仮定):=(ssMin <= ssMax)は'ほぼ確実に何を 'と同等です仕事はありません。はい、ループを使用してデータをループし、個々のセルをテストして条件を満たすかどうかを確認する方がよいでしょう。 (もしあなたが検索していたカラムが1つだけだったら**インデックスと 'Match'演算を使って**可能かもしれませんが、あなたのデータはワークシート全体のどこかにあるので、私は考えませんあなたのために可能になります。) – YowE3K
ユーザーフォームからの入力を受け取り、それをExcelのシンプルまたはアドバンストフィルタの基準として使用することも考えられます。すべてのセルをループするよりも速くて、VBAを使用して条件を簡単に設定することができます。 Advanced Filterでは、 'CopyTo'パラメータを使うことができます。シンプルフィルタを使用すると、フィルタリング後に表示されているセルをコピーします。 –
両方のおかげで、今日私はどのように私はそれを解決した上で取得し、うまくいけば投稿を参照してくださいこれらのアプローチを試してみます。 –