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

Tipstips

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


新着情報
Access2010、最新のレコードを安定して取得する方法
Windows10、マッハドライブはアンイストールすべき
パソコンの動作が遅い、SSDによる高速化2
Netflix、解像度が低い時の対処方法
Access2010、定義XMLによるスキーマの確認が失敗する時の対処方法

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

エクセル将棋館

日本国

地方都市

e−mail(e−mail


スポンサード リンク