エクセルVBAで、フィルターオプションの「項目Aが a以降b以前、または、項目Bが a以降b以前」と同じことをしたいと思っています。(項目Aも項目Bも年月日)
マクロ記録でそれをやると、次のような形になります。
Range(ナントカ).AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:=Range(なんたら), Unique:=False
この検索条件を「範囲で指定する」のではなくて、直接プログラム中で指定したいのですが、それは出来ないのでしょうか。
例えば、下の場合だと、「入居日が2018/12/31以降2019/5/6以前、または、退去日が2018/12/31以降2019/5/6以前」というのが検索条件です。
その検索条件を、Range(なんたら) という範囲で指定するのではなく、直接、2018/12/31や2019/5/6という年月日をVBAで書きたいと思います。
同じことができるのであれば、AdvancedFilter以外でもかまいません。
ご教示いただければ幸いです。
不可能だということであれば、その旨の回答をお願いします。
No.3
- 回答日時:
あらたにデータベースを構築するというアイデアはないわけではないのですが、全部作り変えすることになります。
ただ、VBA直接を書き入れるというものは、AdvancedFilterにはありません。しかし、これは、単純な構成なので、データ場所、数式入力場所を確保し、数式パターンを確保すればいだけです。
>「入居日が2018/12/31以降2019/5/6以前、または、退去日が2018/12/31以降2019/5/6以前」というのが検索条件です。
条件パターンが同じなら日付だけを書き換えればよいですし、数式が違うようなら、パターンを変えて、リストにして、そのパターンを選ぶようにすればよいです。CrForm1、CrForm2 として加えます。
なお、数式は、VBAに作り変えるには面倒ですから、Debug.Print を利用すると便利です。
>同じことができるのであれば、AdvancedFilter以外でもかまいません。
それは、今のものが具合が悪ければ、応相談です。
'//標準モジュール
Sub AdvancedFilterSample1()
Dim rData As Range
Dim CrForm1 As String
Dim Date1, Date2, Date3, Date4
Dim d1, d2, d3, d4
'データの範囲
Set rData = Range("A5:E20")
Date1 = "2018/12/31": d1 = CLng(CDate(Date1))
Date2 = "2019/5/6": d2 = CLng(CDate(Date2))
Date3 = "2018/12/31": d3 = CLng(CDate(Date3))
Date4 = "2019/5/6": d4 = CLng(CDate(Date4))
If ActiveSheet.FilterMode Then
ActiveSheet.ShowAllData 'データを全表示
End If
'F1~F2をクライテリアに使う
'C6..入居日先頭 D6...退去日先頭
CrForm1 = "=OR(AND(C6>=" & d1 & ",C6<" & d2 & "),AND(D6>=" & d3 & ",D6<" & d4 & "))"
Range("F1").ClearComments
Range("F2").FormulaLocal = CrForm1 '数式を代入
rData.AdvancedFilter Action:=xlFilterInPlace, _
CriteriaRange:=Range("F1:F2"), Unique:=False
End Sub
No.2ベストアンサー
- 回答日時:
AdvancedFilterでは必ず Criteriaを書き出す必要があります。
直接指定はできません。ただし Criteriaは数式でも指定できます。
> 同じことができるのであれば、AdvancedFilter以外でもかまいません。
データベースクエリのパラメータクエリを使うか PowerQueryでカスタム数式
を使えばマクロを使わなくてもできます。
No.1
- 回答日時:
AdvancedFilterメソッド名で検索すると、それぞれの引数についても調べる事ができます。
自分で調べ、自分で試し、自分で納得する、というプロセスも重要ですよ。
それでも分からなければ、また質問してください。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(パソコン・スマホ・電化製品) Googleカレンダーで不要データを一括削除したい 1 2023/08/02 12:42
- Visual Basic(VBA) Excelで下記のようにマクロを作ったところ、一回目は実行できたのですが、二回目以降「実行時エラー1 1 2022/03/25 08:08
- Visual Basic(VBA) vbaで条件付き書式を設定したときの適用範囲について 1 2023/07/17 23:14
- Visual Basic(VBA) 【VBA】指定した検索条件に一致したら別シートに転記したい 2 2022/03/23 16:14
- Excel(エクセル) ワードのマクロについて教えてください。 1 2023/03/11 13:50
- Visual Basic(VBA) シフト表のコマで「ブロック」されている前の時間の「出」を同一列の「休」と入れ替えたいがふぇきません。 2 2023/08/02 18:49
- Visual Basic(VBA) Excle VBA Findメソッドについて 3 2022/07/15 13:56
- 法学 改正少年法の64条の2項で、同号、同項がさしているものは何ですか? 3 2022/10/03 21:07
- Excel(エクセル) 並べ替え、ソートの構文がわからない。 お世話になります。VBA超初心者です。 エクセルでワークシート 2 2023/06/28 21:00
- Visual Basic(VBA) ファイル全てを .xlsm に変更したところ、プログラムが途中で落ちてしまっています 17 2022/12/07 12:03
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
性交による振動の伝わり方
-
アエギ声がうるさいお隣さんに...
-
隣の部屋の入居者は30代くらい...
-
シャーメゾン、入居拒否されま...
-
単身向けで同棲する人がうざい...
-
大阪の堺市在住の方、若しくは...
-
夢のマイホーム購入からうつ状態へ
-
住居手当の二重取りは可能なの...
-
大東建託 退去費用の件
-
実家暮らしです! 家の中で友達...
-
ずっと実家暮らしの私 40代にな...
-
2ヵ月後に入居したい物件(現...
-
お住みorお住まい
-
入居審査OK後→大家からのキャン...
-
【退去費について】コンロ台の...
-
退去費用で72万請求されました。
-
「期日指定」ってなんですか?
-
飲食店の上の部屋はやめた方が...
-
中学校や高校の近くの物件につ...
-
市営住宅で世帯分離した時の家...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
性交による振動の伝わり方
-
アエギ声がうるさいお隣さんに...
-
大阪の堺市在住の方、若しくは...
-
教えて下さい
-
シャーメゾン、入居拒否されま...
-
隣の部屋の入居者は30代くらい...
-
大東建託 退去費用の件
-
市営住宅で世帯分離した時の家...
-
退去費用で72万請求されました。
-
住居手当の二重取りは可能なの...
-
夢のマイホーム購入からうつ状態へ
-
府営住宅の撤去費用
-
【退去費について】コンロ台の...
-
【入居後】 部屋の傷はいつま...
-
市営住宅の一時時な住民票の移動
-
住居届けの書き方について
-
シャーメゾンの入居審査は同棲...
-
入居審査OK後→大家からのキャン...
-
実家で親と世帯分離した場合は...
-
大阪府営住宅にすんでます。家...
おすすめ情報