本文へスキップ

別館:エクセルQC館 別館:エクセル株式館

  1. トップページ>
  2. Tips>
  3. Excel2016、VBAで日付データの照合が失敗する原因

Tipstips

備忘録として、主にパソコン関係のTipsを記載して行きます。


新着情報
@UiPath、メモ
AOffice365、Excel:VBAで画面更新がチラツク時の対策
BOffice365、Excel:勝手に手動計算になる原因
COffice365、Excel:フィルターで3つ以上の条件にする方法
DOffice365、Excel:シート同士の違いを見つける方法

Excel2016、VBAで日付データの照合が失敗する原因

Excel2016は、手頃な価格で高機能な表計算ソフトです。
VBAを使用すれば、自動で検索や照合を行えます。

しかし、VBAで日付データを照合していた時、失敗する現象が発生しました。使用したパソコンは、下記の
ソフトを使用していました。

OS       : Windows10(64bit)バージョン1607(OSビルド 14393.953)
表計算ソフト   : Excel2016(32bit)

以下、Excel2016、VBAで日付データの照合が失敗する原因を記載して行きます。

(項目1)
 ・VBAで日付データを照合していた時、失敗する現象が発生しました。
 ・下図の様に、2016/12/30〜2016/12/31は成功しましたが、2017/1/1〜2017/1/3は失敗しました。
  

 ・VBAコードは、以下の通りです。

  Sub test1()

    Dim i As Long
    Dim buf(10) As String

    buf(1) = "2016/12/30"
    buf(2) = "2016/12/31"
    buf(3) = "2017/1/1"
    buf(4) = "2017/1/2"
    buf(5) = "2017/1/3"

    Range("C2:C6").ClearContents

    For i = 1 To 5

      If Range("B" & i + 1) = buf(i) Then
        Range("C" & i + 1) = "Hit"
      Else
        Range("C" & i + 1) = "-"
      End If

    Next i

  End Sub

(項目2)
 ・色々と調べて見ると、日付が数値データとなっている為に発生した様です。
 ・これを解決するには、照合する日付の月日を2桁にする必要が有ります。
  2017/1/1 → 2017/01/01

(項目3)
 ・照合する日付の月日を2桁にすると、下図の様に照合が全て成功します。
  

 ・VBAコードは、以下の通りです。

  Sub test2()

    Dim i As Long
    Dim buf(10) As String

    buf(1) = "2016/12/30"
    buf(2) = "2016/12/31"
    buf(3) = "2017/01/01"
    buf(4) = "2017/01/02"
    buf(5) = "2017/01/03"

    Range("I2:I6").ClearContents

    For i = 1 To 5

      If Range("H" & i + 1) = buf(i) Then
        Range("I" & i + 1) = "Hit"
      Else
        Range("I" & i + 1) = "-"
      End If

    Next i

  End Sub

(項目4)
 ・以上で、Excel2016、VBAで日付データの照合が失敗する原因は終了です。
 ・VBAで日付データを使用する場合は、十分な確認が必要となります。



contents

エクセル将棋館

日本国

地方都市


スポンサード リンク