- ベストアンサー
エクセルVBAでセルに入っている一番後ろの日付だけ取得したいのですが
VBA初心者なんですがセルに以下のようなデータが 入っているときに最後の日付だけを残して 前の日付等を削除したいのですがどのようにすれば可能でしょうか? 例 2006/6/30 2006/7/21 2006/8/8 2006/8/25 2006/9/15 ↓ 2006/9/15 よろしくお願いします。
- みんなの回答 (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)
こんにちは。 >初心者なんですが[ひとつの]セルに以下のようなデータが入っているときに最後の日付だけを残して [ひとつの] が抜けているのとないのでは、かなり違います。一挙に、高度な内容の質問に変わりましたね。^^; 一応、ユーザー定義関数として別けておきましたので、単独でも使えます。 '**標準モジュール** 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)
データはA1から始まるとして、 Range("A1", Range("A65536").End(xlUp).Offset(-1)).ClearContents
補足
早速の回答いただいたのですが私の意図した回答 ではないです。 私の説明不足だったみたいです。申し訳ございません。 一つのセルの中に以下のデータが入っているときに そのセルの値を2006/9/15にしたいということ なんですが可能でしょうか? 2006/6/30 2006/7/21 2006/8/8 2006/8/25 2006/9/15 よろしくお願いします。