初めてこの素晴らしいコミュニティを楽しむことができて嬉しく思います。これは私の最初の投稿ですので、投稿時に間違いがあれば事前にお詫びします。日付基準を持つテーブルのvba excel AdvancedFilterメソッドは機能しません
私がアクセスファイルからデータをインポートするので、行数が動的に変化...私はVBAを経由して、この表にAdvancedFilter
方法を適用しようとしていることにより、生成された例という名前のテーブルを得ました。
私はテーブルのヘッダーをコピーするためにシートの最初の行を使用しました.2番目の行では、フィルタリングのためにパラメータを設定しました。A1:D2の条件があります。行5から始めてテーブルがあります。ヘッダ行で始まり、データのすべての行と一緒にアクセスファイルからインポートされます。たとえば、範囲A5:D20です。
テーブルA5:D30の範囲と指定範囲A1:D2の範囲を指定すると、高度なフィルタを手動で適用します(詳細フィルタボタンをクリックしてフォームに記入してください)。データの範囲を指定するのではなく、テーブルの名前を使用する場合例結果は違うので、私が期待している5つの行(正しい行)ではなく1行だけです。
上記の質問が好奇心のためのものである場合(ただし、私の問題と結びついていると確信しています)、主な問題はVBAコードで同じことをしようとしていることです。私は
Worksheets("name").Range("example[#All]").AdvancedFilter _
Action:=xlFilterInPlace, CriteriaRange:=Range("A1:D2"), Unique:=False
と
Worksheets("name").ListObjects("example").Range.AdvancedFilter _
Action:=xlFilterInPlace, CriteriaRange:=Range("A1:D2")
を試みたが、両方が動作しません:フィルタリングアクションが何行を返しませんでした。
私は
Worksheets("name").Range("A5:D30").AdvancedFilter _
Action:=xlFilterInPlace, CriteriaRange:=Range("A1:D2"), Unique:=False
は、問題が解決しない(...ない範囲が動的に変化するので、私の問題の解決策が、テスト目的のために)手動で範囲を指定してみてください場合でも、コードが返されませんでした行はありません。
注:私は代わりにAdvancedFilter
上記コードでrange
をselect
あれば選択が正しい:私はマクロの記録を開始する場合はヘッダ
最初のコードと、テーブル全体が自動的に書かれた同じであり、行います手動でフィルタリングし、マクロの記録を停止する(テーブル参照で正確に書かれたコード)... wierdのことは、私が手動で(マクロを記録している間)操作を行うと正しくフィルタリングされますが、 ...何も、上記のコードを実行する場合と同じです。
私は式 - >名前タブを開くと、私は例テーブルを見つけることができますが、specifyed範囲は、ヘッダーが考慮されていないみたいだ...行5からではなく、6からはありません開始していません理由は分かっていますが、データのインポートによって自動的に生成されるので、インポートされたデータへの参照を保持する範囲を変更する方法がわかりません...おそらくこれは問題ですか?
問題を解決する方法がわからない、私を助けてください:)
編集:私は、フィルタのために使用している基準の
2つは具体的には、日付の基準である:日付< = XX/yy/zzzzと日付> = aa/bb/ccccと問題はまさにこの問題です...上記の3つのコードを上記の文字列基準でフィルタリングしてみると、日付基準で使用すると動作しますが、彼らはしません。だから私は問題は、VBAの日付データ型を手渡す方法に依存すると思います。なにか提案を?
基準に使用される細胞は、この式(「SE」は、「IF」のイタリア語版である)を含有する:
=SE(filtro!F2="";"";">="&filtro!F2)
=SE(filtro!F3="";"";"<="&filtro!F3)
を私は別のシート(「filtro」)から基準を取り、細胞である場合私は< =または> =に挿入されたデータを基準に報告します。そうでない場合は、条件を設定しないためにセルは空のままです。
エットーレ
VBAでプログラムされた詳細フィルタでテーブル名を使用する際に問題が再現できません。ネーミングと同じくらい、あなたが見る動作は正常です。テーブル名は、データ範囲のみを参照します。ヘッダー範囲(必要なもの)を含める場合は、 'Table1 [#All]'形式を使用してください。データに問題があるか、基準を設定した可能性があります。 –
問題がデータまたは条件の問題に依存する場合、フィルタは「手動」モードでは機能しないはずです...しかし、同じシート、同じテーブル、同じデータ、ボタンをクリックしてフィルターを適用し、私が書いた3番目のコードで使用したのと同じ範囲でフォームを記入してください。それは動作します...多分、テーブルの_example_がデータのインポートで自動的に生成されることになりますか? – EttoreP
日付またはローカル区切り記号を使用する条件である基準は、VBAでは手動で実行したときとは異なる処理をすることがあります。あなたが提供した情報であなたの問題を再現することはできないので、私ができることはあまりありません。あなたが好きな場合は、機密情報を削除して問題を示すブックを公開共有サイトにアップロードし、ここにリンクを投稿してください。 –