• ベストアンサー

エクセルVBAでセルに入っている一番後ろの日付だけ取得したいのですが

VBA初心者なんですがセルに以下のようなデータが 入っているときに最後の日付だけを残して 前の日付等を削除したいのですがどのようにすれば可能でしょうか? 例 2006/6/30 2006/7/21 2006/8/8 2006/8/25 2006/9/15   ↓ 2006/9/15 よろしくお願いします。

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

  • ベストアンサー
  • hana-hana3
  • ベストアンサー率31% (4940/15541)
回答No.3

>一つのセルの中に以下のデータが入っているときに もっと単純な方法もありますが、簡単な日付チェックを行っているので、とりあえずは使えるかと思います。 Sub test() Dim str As Variant Dim num As Integer str = Split(Range("A1"), vbLf) num = UBound(str) Do While num >= 0 If IsDate(str(num)) Then Exit Do Else num = num - 1 End If Loop If num >= 0 Then Range("A1") = str(num) Else Range("A1") = "" End If End Sub

その他の回答 (2)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんにちは。 >初心者なんですが[ひとつの]セルに以下のようなデータが入っているときに最後の日付だけを残して [ひとつの] が抜けているのとないのでは、かなり違います。一挙に、高度な内容の質問に変わりましたね。^^; 一応、ユーザー定義関数として別けておきましたので、単独でも使えます。 '**標準モジュール** Sub TestMarco1()  With ActiveCell  If InStr(.Value, vbLf) > 0 Then    .Value = SplitString(.Value)    .EntireRow.AutoFit  End If  End With End Sub Function SplitString(ByVal myStr As String) Dim Delimiter As String Dim Buf As Variant Dim i As Integer  Delimiter = vbLf  Buf = Split(myStr, Delimiter)  If UBound(Buf) > -1 Then   i = UBound(Buf)   SplitString = Buf(i)  Else   SplitString = myStr  End If End Function

  • hana-hana3
  • ベストアンサー率31% (4940/15541)
回答No.1

データはA1から始まるとして、 Range("A1", Range("A65536").End(xlUp).Offset(-1)).ClearContents

kanjaneko
質問者

補足

早速の回答いただいたのですが私の意図した回答 ではないです。 私の説明不足だったみたいです。申し訳ございません。 一つのセルの中に以下のデータが入っているときに そのセルの値を2006/9/15にしたいということ なんですが可能でしょうか? 2006/6/30 2006/7/21 2006/8/8 2006/8/25 2006/9/15 よろしくお願いします。

関連するQ&A