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で日付データを使用する場合は、十分な確認が必要となります。