みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

日付セルをVBAのVLOOKUPで見つけられません

 今日は、質問させていただきます。どうぞよろしくお願いいたします。

 環境:Excel2010+Win7
でございます。

 今、A列の日時データの中から、特定の日時のセルの行を取得しようといたしまして、下記のようにコーディングいたしました。が何故か
WorksheetFunction.CountIfでは見つかっているのですが
WorksheetFunction.VLookupではエラーが帰ってまいります。


【A列のデータ】(ユーザ定義で「yyyy/mm/dd hh:mm:ss.000」としております。)
2015/05/16 22:00:00.002
2015/05/16 22:00:00.182
2015/05/16 22:00:00.342
    :
    :

【VBA】
Sub test()
 Dim WS_DATA As Worksheet
 Set WS_DATA = ThisWorkbook.Worksheets("Sheet1")

 With WS_DATA
  str時間 = "2015/05/16 22:00:00.002"

  If WorksheetFunction.CountIf(.Range("A:A"), str時間) > 0 Then
   MsgBox (Application.WorksheetFunction.VLookup(str時間, .Range("A:A"), 1, False)) '←ここでエラーになります
  Else
 MsgBox str時間 & "がリストに存在しません。"
  End If

 End With
End Sub


【実行結果】
 コード中に記しましたエラー箇所で、
「実行時エラー1004   WorksheetFunctionクラスのVlookupプロパティーを取得できません」となります。検索範囲内に見つからない場合のエラーのようでございます。

 あとVBAに
日時 = Format(str時間, "yyyy/mm/dd hh:mm:ss.000")
を追記して、この「日時」を探してみましたが、同じ結果になりました。。。
(CountIfでは見つかっていますが、Vlookupではエラーになります。)


 データが大量にありますので高速に検索出来る方法を探しておりますが
(=おそらく、VLookUpを使うか、もしくはA列をVariant型に入れて検索する?)、
何か良い方法はないものでございましょうか?

 もしお詳しい方がいらっしゃいましたら,是非アドバイスいただきたく
何卒よろしくお願いいたします。

投稿日時 - 2015-07-19 11:24:27

QNo.9015044

困ってます

質問者が選んだベストアンサー

まず、A列のデータですが、セルを選択して数式バーには
恐らくyyyy/mm/dd hh:mm:ssまでのデータで表示されていませんか?
ユーザー定義設定をしても、日付書式がある以上、
日付としての認識がなされて、後ろにつけている.000は
あくまでも表示上の内容になるものと思います。
特にVlookupの文字列検索は完全一致する必要があります。
個人的憶測ですがCountifは、表面上のものでも範囲として
捉えてくれるのではないでしょうか。

で、解決策ですが、
そもそも質問のコードであれば、Vlookupの必要性はなく
Countifで対応出来そうな気がしますが、何か他の理由があるのでしょうか?
どうしてもVlookupを使用したい場合は、
一旦別の列を作って、=TEXT(A2,"yyyy/mm/dd hh:mm:ss.000")などとして
これを下にオートフィル。
この値を検索すると出てくると思います。

投稿日時 - 2015-07-19 14:31:23

お礼

 どうもありがとうございます!m(_ _)m
仰る通り、セルを選択した状態で数式バーにyyyy/mm/dd hh:mm:ssが出てきましたので
B列に「=TEXT()」としてこれを検索しましたところ、見つけることが出来ました。
>Vlookupの必要性はなくCountifで対応出来そうな気がしますが、何か他の理由があるのでしょうか?
 はい、検索した日時のある行を取得したいのですが、COUNTIFだと一致するセルの個数しか出てこないと思いますので、VLOOKUPでどうにかならないかなー(?)などと考えております。

 しかしデータが30万行ありまして、これをオートフィルするとなると膨大な量に。。。orz
もう少し追加で工夫を考えてみます。
本質問は解決いたしましたので、クローズさせていただきます。
この度はご親切にどうもありがとうございました!!m(_ _)m

投稿日時 - 2015-07-19 15:08:19

ANo.1

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)