私は、特定の列の空白を除外するためにチェックボックスを使用するuserformを持っています。フィルタリングされる範囲はシート1 A1:C10であり、条件の範囲はシート2 A1:C2です。Excel VBA:詳細なフィルタブランクが機能しない
チェックした場合:チェックボックスをオフにした場合列C をフィルタリングしないでください。列C
に空白をフィルタリング私は周りを見回したと高度なフィルタ上の空白をフィルタリングするために、オペレータが「=」であることを見出しました。私はフィルタを処理するときにそのため、私はユーザーフォーム上のボタンを押したときに、私は「=」
If Checkbox1.Value Then
Sheets(2).Range("C2").Value = ""
Else
Sheets(2).Range("C2").Value = "="
End If
Sheets(1).Range("A1:C10").AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:= _
Sheets(2).Range("A1:C2"), Unique:=False
にシート2 C2を設定し、私はこれを処理すると、すべてのエントリは、さえブランクが消えます。
Else
Sheets(2).Range("C2").Value = "<>"
これは空白ではなく、すべての行を非表示にする必要があります。
ここはキッカーです。トラブルシューティングするために、私は私のマクロの自動フィルタリングブランクを記録し、そしてそれは私にこれを与えた:
ActiveSheet.Range("$A$1:$C$2").AutoFilter Field:=3, Criteria1:="="
だから、それは「=」正しいですが、それはちょうど私と一緒に仕事をしたくないというのフィルタリングと思われます。
サイドノート:はちょうど蹴りのために、私は必要な基準セルは、VBAことを意味し、=「「」「」「=式が読んであろうことを意味し、」=」と表示することを考えました次のようになります。
Else
Sheets(2).Range("C2").Value = "=""="""""""""""
これも機能しません。
編集: @Scott、私は次の4つのラインを持っています。いずれも機能しないようです。リンクされたページには、空白を排除する例が示されています。したがって、私は0に加えて= 0を試しました。
Else
Sheets(2).Range("C2").Value = "=LEN(Sheet1!C2)=0"
Else
Sheets(2).Range("C2").Value = "=""=LEN(Sheet1!C2)=0"""
Else
Sheets(2).Range("C2").Value = "=LEN(Sheet1!C2)>0"
Else
Sheets(2).Range("C2").Value = "=""=LEN(Sheet1!C2)>0"""
はこちらを参照してください。http://stackoverflow.com/questions/39537165/vba-advancedfilter-filter-and-copy-unique-cells-without-blank-empty-セル/ 39538548#39538548 –
基本的にあなたが望む式は '= LEN(Sheet1!C2)> 0'です。ここで、' C2'は非ブランクをテストしたいデータセットの最初のセルです。 –
私は再開しました。私はいくつかのテストを行います。 (2).Range( "C2")。数式= "= LEN(Sheet1!C2)= 0" ' –