質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

マクロ

定義された処理手続きに応じて、どのような一連の処理を行うのかを特定させるルールをマクロと呼びます。

Q&A

2回答

1232閲覧

VBAにて本日日付でソートしたい

sophianer123

総合スコア10

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

マクロ

定義された処理手続きに応じて、どのような一連の処理を行うのかを特定させるルールをマクロと呼びます。

0グッド

0クリップ

投稿2018/09/19 01:52

前提・実現したいこと

ここに質問の内容を詳しく書いてください。

vbaでcsvからデータを引き込んで、本日の日にちでソートをかけたいです。
よろしくお願いします。

発生している問題・エラーメッセージ

ソートされない。 該当データがないと判断され、全て隠れてしまいます。
エラーメッセージ

### 該当のソースコード Range(“A2”).autofilter field:=1, _ Criteria1:=xlfiltertoday, _ Operator:=xlfilterdynamic ### 試したこと ここに問題に対して試したことを記載してください。 ### 補足情報(FW/ツールのバージョンなど) ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mdj

2018/09/19 02:34

処理するデータがどのようになっているかを教えてください
coco_bauer

2018/09/19 02:42

質問は「ソートしたい」となっていますが、質問に書かれたコードはオートフィルターでデータを絞り込むものです。 質問に何がしたいのかを追加すると良いと思います。
sophianer123

2018/09/19 05:54

すいません。 ソートという言い方がダメでした。オートフィルタで絞り込みたいです。データは20180918という風に日付が入っています。になってます。
coco_bauer

2018/09/19 06:06

20180918という風とのことですが、そのセルの表示形式は何ですか? B3セルに 「=cell("format",A3)」という関数式を入れて、何が表示されるか教えてください。
guest

回答2

0

データは20180918という風に日付が入っています。

日付と勝手に解釈されていますが、
エクセル君はその形式を「日付」と解釈しないと思います。

値としては単なる「整数」か、運がよければ「文字列」と認識されているかも知れません。
まずは、
VBAがどうとかマクロがどうとかではなく、エクセル君の仕様や、エクセル君のオートフィルターの機能の仕様を知ることが肝要かと思います。
そして、、手動で今日のデータを「抽出」出来るようになりましょう。
その結果に基づきコードで指定することによりマクロが作れると思います。

返事が無いようなので追記します。

基本的に、フィルターの抽出条件には「文字列」を指定する仕様です。
そして、特定の日付を(セルのデータが日付として認識され表示されている場合)抽出するときは、
条件1に >=2018/9/18
条件2に <=2018/9/18
と指定して特定の日付を抽出します。
ただし、今回のケースの場合、単に「数値」として入っていると思うので(エクセル君が勝手に解釈しているだけ)、
条件1に単に 20180918 と、入力すれば抽出できるような気がします。
(もちろん文字列と認識されていても同じ)
それか、数値なら =20180918 というような条件になるかも知れません。
(この辺は実験しながら確かめることが自分の為になると考えます。)
抽出条件には「文字列」を入力するのですから、
日付を抽出するときは、見えている表示形式に合わせたら抽出できますが、
上で述べたように比較式で入力すると、シリアル値で比較されますので、
セルの書式の表示形式に影響されませんので、ここは覚えておいてください。

翻ってVBAの話ですが、
ヘルプで、Range.AutoFilter メソッドを検索すると、
Criteria1 オプション バリアント型 (Variant) 抽出条件となる文字列 ("101" など) を指定します。
とあります。
このことからも、文字列で条件を指定する必要があります。
で、実際にどうやるかというと、
VBAにはFormat関数というものがあります。
この関数を使うと、日付を自分好みの様式の「文字列」に変換してくれます。
なので、

VBA

1Range(“A2”).autofilter field:=1, _ 2Criteria1:=Format(Date,”YYYYMMDD"), _ 3Operator:=xlfilterdynamic

というようにしてやればいいのではないかなぁと思います。
長くなりましたがヒントになれば幸いです。

投稿2018/11/06 10:45

編集2018/11/07 10:06
mattuwan

総合スコア2136

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ホーム画面で表示形式が日付以外になっていませんか?

投稿2018/11/06 02:26

KensukeSugawara

総合スコア12

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問