Excel VBA質問箱 IV

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

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


6718 / 76734 ←次へ | 前へ→

【75613】Re:advancedfilterでの日付け検索
発言  kanabun  - 14/5/24(土) 17:46 -

引用なし
パスワード
   AdvancedFilterで 日にちを抽出するなら、
やはり元のデータを文字列から日付け型に修正しておくのが簡単そうです。

D列に こんなデータがあるとして、

 Date
  2012/1/1
 2012/1/1 12:00 AM
  2012/3/5
  2012/8/5
 2012/8/5 0:00
 2012/8/5 12:00 AM
2012/8/5AM
12/8/5 am
2015/9/12 Am
2012/2/10:15:30:00
2016/8/11 am
2016/7/10 pm
02/08/01 PM
2015/9/5 Am
2012/2/05:15:30:00
2016/8/05 am
2016/7/5 pm
02/08/05 PM

以下のマクロを実行します(データは書き換えられるので、複製データで
試してください)
'-----------------------------------------------------------ここから
Sub CDate_Range() 'D列(2行目以降)のデータを日付型に修正
  Dim r As Range
  Dim v
  Dim i&
  Const Msg = "D列(2行目以降)のデータを日付型に修正します。"
  If MsgBox(Msg, vbOKCancel) = vbCancel Then Exit Sub
  
  Set r = Range("D2", Cells(Rows.Count, "D").End(xlUp))
  v = r.Value
  For i = 1 To UBound(v)
    If Not IsDate(v(i, 1)) Then
      v(i, 1) = CDate2(v(i, 1))
    End If
  Next
  r.Value = v
End Sub

Private Function CDate2(s)
  Dim v
  Dim y, m
  Dim ok As Boolean
  
  v = Split(s, "/")
  If UBound(v) = 2 Then
    y = Val(v(0))
    m = Val(v(1))
    Select Case y
     Case 1900 To 2200
       ok = True
     Case Else
       If IsNumeric(y) Then
         If y > 0 And y < 200 Then
           y = y + 2000
           ok = True
         End If
       End If
    End Select
    If ok Then
      Select Case m
       Case 1 To 12
       Case Else
         ok = False
      End Select
    End If
    If ok Then
      CDate2 = DateSerial(y, m, Val(v(2)))
    Else
      CDate2 = s
    End If
  Else
    CDate2 = s
  End If
End Function
'-----------------------------------------------------------ここまで
実行すると上のデータは↓こうなります。
Date
 2012/1/1
 2012/1/1 12:00 AM
 2012/3/5
 2012/8/5
 2012/8/5 0:00
 2012/8/5 12:00 AM
 2012/8/5
 2012/8/5
 2015/9/12
 2012/2/10
 2016/8/11
 2016/7/10
 2002/8/1
 2015/9/5
 2012/2/5
 2016/8/5
 2016/7/5
 2002/8/5

こうしておけば
[E2] =Day(D2)=5
のような条件だけで 日にちを AdvancedFilterできます。

13 hits

【75574】advancedfilterでの日付け検索 masu 14/5/21(水) 13:17 質問
【75576】Re:advancedfilterでの日付け検索 kanabun 14/5/21(水) 14:27 発言
【75577】Re:advancedfilterでの日付け検索 masu 14/5/21(水) 16:10 質問
【75578】Re:advancedfilterでの日付け検索 kanabun 14/5/21(水) 16:57 発言
【75580】Re:advancedfilterでの日付け検索 masu 14/5/21(水) 17:37 お礼
【75602】Re:advancedfilterでの日付け検索 masu 14/5/23(金) 15:27 質問
【75605】Re:advancedfilterでの日付け検索 yuto 14/5/23(金) 21:22 回答
【75607】Re:advancedfilterでの日付け検索 masu 14/5/23(金) 21:49 お礼
【75606】Re:advancedfilterでの日付け検索 kanabun 14/5/23(金) 21:28 発言
【75608】Re:advancedfilterでの日付け検索 kanabun 14/5/23(金) 23:22 発言
【75609】Re:advancedfilterでの日付け検索 masu 14/5/24(土) 8:46 質問
【75610】Re:advancedfilterでの日付け検索 kanabun 14/5/24(土) 11:14 発言
【75611】Re:advancedfilterでの日付け検索 masu 14/5/24(土) 12:19 質問
【75612】Re:advancedfilterでの日付け検索 kanabun 14/5/24(土) 13:23 発言
【75613】Re:advancedfilterでの日付け検索 kanabun 14/5/24(土) 17:46 発言
【75614】Re:advancedfilterでの日付け検索 masu 14/5/24(土) 18:11 お礼

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