2017-09-22 12 views
1

私はExcelでリフレッシュ可能なテーブルを持っており、いくつかの日付範囲で行をフィルタリングしたいと思います。各行には日付とその他の情報があります。Excel - 日付によるフィルタテーブルの結果

最初の日付範囲(F1:F2)にあり、2番目の日付範囲(H1:H2)にない行を探したいとします。

テーブルはリフレッシュ可能で、サイズを変更することができます。現在、A3:X6146にまたがっています。テーブルはクエリであるため、別の日付範囲を使用してテーブル値を検索すると、サイズが変更されます。

私はVBAの経験があまりないので、この問題は私を驚かせています。何か案は?

おかげ

EDIT:

私は問題をより明確にしようとするでしょう。

私は、開始日と終了日の間にあるデータを引くクエリを使用して作成されたテーブルを持っています(2011年1月1日と2014年12月31日)。アイテムが購入されるたびにリストされるので、それぞれのアイテムを複数回リストすることができます。

有効期限の開始日と終了日(セルF1とF2)の間で購入されたアイテム(表にリストされているもの)を検索し、非アクティブ期間(セルH1とH2)の間で購入しません。

Starting Date: 1/1/2016 Active Date Range Start: 3/1/2016 Inactive Date Start: 3/2/2017 

Ending Date: 12/31/2017 Active Date Range End: 3/1/2017  Inactive Date End: 9/22/2017 




item date 
1  9/21/2017 
2  9/20/2017 
3  9/20/2017 
+0

「MATCH」式H列のFの値を見つけ、NAをフィルタリングします。 VBAは必要ありません。 –

答えて

0

はい、私はあなたに何をしようと言うことができます。

結果の値を保持する列を1つ追加します(結果の値が日付範囲の範囲外にある場合)。次に

dim t() as string, lin as long, linf as long 
linf=Range("F65536").End(xlUp).Row 'or any other more precise way to get the final line 
redim t(1 to linf-2,1 to 1) 

'range dates - are they on the worksheet? 
dim rg_dates as Range,r as range,b as boolean 
set rg_dates=Sheets("xxxx").Range("B1:B4") ' just an example, the range would be B1:C4 but use only the first column - see below 

    For lin=3 to linf 
     b=False 
     For each r in rg_dates 
      If cells(lin,"F").value>= r.Cells(1,1) and cells(lin,"G").Value<=r.Cells(1,2).value then 
      b=true 
      Exit for 
      End If 
     Next r 
     If b then t(lin-2,1)="Y" else t(lin-2,1)="N" 

    Next l 
    Range("Z3:Z" & linf).Value = T 

'テーブルをフィルタリングします。

エラーフリーで、具体的な状況でそれを適用する方法は、多くあります。私が上に書いたことをうまくいけば、VBAを使ってできることを知ることができます。コードを使用してテーブルをフィルタリングする場合は、フィルタの条件として余分な列を作成し、フィルタリングして列全体を削除することで、すべてをユーザーに見えなくすることができます。

関連する問題