2016-10-07 14 views
0

私は、特定の列の空白を除外するためにチェックボックスを使用する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""" 
+0

はこちらを参照してください。http://stackoverflow.com/questions/39537165/vba-advancedfilter-filter-and-copy-unique-cells-without-blank-empty-セル/ 39538548#39538548 –

+0

基本的にあなたが望む式は '= LEN(Sheet1!C2)> 0'です。ここで、' C2'は非ブランクをテストしたいデータセットの最初のセルです。 –

+0

私は再開しました。私はいくつかのテストを行います。 (2).Range( "C2")。数式= "= LEN(Sheet1!C2)= 0" ' –

答えて

1

わかりました。 Sheet2の上

C1は空である必要があります。

この式では、フィルタ部分が処理されます。

その後、コードは次のとおりです。

If Checkbox1.Value Then 
    Sheets(2).Range("C2").Value = "" 
Else 
    Sheets(2).Range("C2").Formula = "=LEN(Sheet1!C2)=0" 
End If 

Sheets(1).Range("A1:C10").AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:= _ 
    Sheets(2).Range("A1:C2"), Unique:=False 
+0

ブードゥー私は言う!それは働いた:)ありがとう! - この問題を抱えている他の人にとっては、フィルターの範囲より小さい基準範囲を使用している場合、空のヘッダーは同じ列オフセットにある必要があります。たとえば、A1:Z3000をフィルタリングし、これを列Qに適用する場合は、条件範囲の空のヘッダーが第17列にある必要があります。 – MrMusAddict

関連する問題