Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


6960 / 76732 ←次へ | 前へ→

【75368】Re:いつからいつまでを抽出
発言  kanabun  - 14/3/13(木) 16:52 -

引用なし
パスワード
   (補足2)
今回はある期間内の日付データの抽出ということで、一般機能のFilterを
使いましたが、単一の日付のときなら .Findメソッドが適当かというと、
Findメソッドで日付の検索はやらないほうがいいです。
なぜかというと、日付データのセルには「2010/1/6」のような「日付け型」
の値とともに、内部で計算するために「40512」というシリアル値も
格納されています。
Matchワークシート関数を使うと、セルの「40512」のようなシリアル値を
検索してくれます。
Findを使ったばあいは、シリアル値でなく「日付」を検索しようとします。
Findを使った日付の検索がよく失敗するのは、Findが文字列の検索をする
からです。日付の検索でも、セルの表示形式で検索値を文字列にして
検索しないとまずヒットしません。
ただ、Match関数だと検索範囲の先頭セルから検索していちばん最初に
マッチしたセルの位置を見つけてそれで終わり、です。なので、ある
範囲の中から同じ日付を複数個見つけようとするときは、
Find と FindNext のDo〜Loop でなく、フィルタを使ってください。
今回使ったAdvancedFilter でもいいし、AutoFilter でもいいです。
書き方は 以下の通り

(↓例は 2014/3/1 〜 2014/3/20 までの期間内データを抽出するばあい)
 範囲.AutoFilter 1, ">=" & CDate("2014/3/1"), xlAnd, _
           "<=" & CDate("2014/3/20")

(↓例は 2014/3/1 のレコードだけを抽出するばあい)
 範囲.AutoFilter 1, ">=" & CDate("2014/3/1"), xlAnd, _
           "<=" & CDate("2014/3/1")

一日だけでも、不等号を使い、「以上」「以下」と指定してやるのが、
ポイントです。一日だけだからといって、

 範囲.AutoFilter 1, CDate("2014/3/1")

とすると、失敗します。(たぶんFindのように文字列として検索する
からと思われます)

0 hits

【75365】いつからいつまでを抽出 キョウコ 14/3/13(木) 11:49 質問
【75366】Re:いつからいつまでを抽出 kanabun 14/3/13(木) 13:06 発言
【75367】Re:いつからいつまでを抽出 kanabun 14/3/13(木) 16:15 発言
【75369】Re:いつからいつまでを抽出 キョウコ 14/3/13(木) 16:53 質問
【75370】Re:いつからいつまでを抽出 kanabun 14/3/13(木) 17:13 発言
【75372】Re:いつからいつまでを抽出 キョウコ 14/3/13(木) 17:45 お礼
【75371】Re:いつからいつまでを抽出 kanabun 14/3/13(木) 17:31 発言
【75368】Re:いつからいつまでを抽出 kanabun 14/3/13(木) 16:52 発言

6960 / 76732 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free