回答編集履歴

1

追記

2018/11/07 10:06

投稿

mattuwan
mattuwan

スコア2136

test CHANGED
@@ -17,3 +17,75 @@
17
17
  そして、、手動で今日のデータを「抽出」出来るようになりましょう。
18
18
 
19
19
  その結果に基づきコードで指定することによりマクロが作れると思います。
20
+
21
+
22
+
23
+ 返事が無いようなので追記します。
24
+
25
+
26
+
27
+ 基本的に、フィルターの抽出条件には「文字列」を指定する仕様です。
28
+
29
+ そして、特定の日付を(セルのデータが日付として認識され表示されている場合)抽出するときは、
30
+
31
+ 条件1に >=2018/9/18
32
+
33
+ 条件2に <=2018/9/18
34
+
35
+ と指定して特定の日付を抽出します。
36
+
37
+ ただし、今回のケースの場合、単に「数値」として入っていると思うので(エクセル君が勝手に解釈しているだけ)、
38
+
39
+ 条件1に単に 20180918 と、入力すれば抽出できるような気がします。
40
+
41
+ (もちろん文字列と認識されていても同じ)
42
+
43
+ それか、数値なら =20180918 というような条件になるかも知れません。
44
+
45
+ (この辺は実験しながら確かめることが自分の為になると考えます。)
46
+
47
+ 抽出条件には「文字列」を入力するのですから、
48
+
49
+ 日付を抽出するときは、見えている表示形式に合わせたら抽出できますが、
50
+
51
+ 上で述べたように比較式で入力すると、シリアル値で比較されますので、
52
+
53
+ セルの書式の表示形式に影響されませんので、ここは覚えておいてください。
54
+
55
+
56
+
57
+ 翻ってVBAの話ですが、
58
+
59
+ ヘルプで、Range.AutoFilter メソッドを検索すると、
60
+
61
+ **Criteria1 オプション バリアント型 (Variant) 抽出条件となる文字列 ("101" など) を指定します。**
62
+
63
+ とあります。
64
+
65
+ このことからも、文字列で条件を指定する必要があります。
66
+
67
+ で、実際にどうやるかというと、
68
+
69
+ VBAにはFormat関数というものがあります。
70
+
71
+ この関数を使うと、日付を自分好みの様式の「文字列」に変換してくれます。
72
+
73
+ なので、
74
+
75
+
76
+
77
+ ```VBA
78
+
79
+ Range(“A2”).autofilter field:=1, _
80
+
81
+ Criteria1:=Format(Date,”YYYYMMDD"), _
82
+
83
+ Operator:=xlfilterdynamic
84
+
85
+ ```
86
+
87
+
88
+
89
+ というようにしてやればいいのではないかなぁと思います。
90
+
91
+ 長くなりましたがヒントになれば幸いです。