• ベストアンサー

エクセル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

  • Excel VBA を使って 日付の表示

    お世話になります。VBAを使ってSQLDBからデーターの読込みを行っているのですが、読込まれたセルが日付やカンマ編集する方法が判りません。 どなたかHELPをお願い致します。  例) Sheet1 の A列 が日付          B列が 数字 宜しくお願いします。

  • エクセルVBAを使ってセルに日付+通し番号を入力したい

    Excel2003でVBAを使い、セルに[現在の日付および時間]+[3桁の通し番号]を文字列で入力したいのですが、なかなかうまくいきません。 例えばA列に データA データB データC ・・・ ・・・ のようにデータが200個ほどある場合、B列に yymmddhhmm001 ← 2009年12月13日3時25分に実行した場合は0912130325001 yymmddhhmm002 yymmddhhmm003 ・・・ ・・・ のように記載したいと思っています。 VBA初心者ですので、ものすごく簡単なことを質問しているかもしれませんがご教授頂ければ幸いです。 宜しくお願いします。

  • エクセルの1つのセル内にある日付と時間をわける方法を教えてください

    いつもお世話になっております。 エクセルで、同じセルの中に以下のように日付と時間が入って しまっています。これを日付だけにしたいのですが 表示で日付だけにするのではなく、時間部分を削除して しまうやり方がありましたら教えてください。 日付の空白以降は削除、などでも良いのですが ピポットテーブルで日付での件数を出したいので 時間が削除できれば何でも良いです。 【例】↓ 2006/11/1 10:02:25 2006/11/1 10:03:18 宜しくお願い致します。

  • VBAで日付取得

    お世話になっております。 このたびVBAを使用してWBSを作成しようと考えております。 そこで、以下のような日付取得のロジックを考えました。 ・A1セルからA100セルまで一行ずつ下へforでまわす ・日付はYYYYとMMとDDに分割したい --------------------------------------- For I = 0 To 99 セルに入力された値 = Range("A1").Offset(I).Value MsgBox セルに入力された値 '(1)2009/11/16とでます。 年だけ = Year(セルに入力された値) MsgBox 年だけ '(2)1905/03/13とでます。 NEXT ・ ・ -------------------------------------- (2)は(1)の値を変えてみても1905/03/13とでます.. (2)はなぜ2009を拾ってくれないのでしょうか。。。 ご教授ください。 宜しくお願いいたします。

  • エクセルVBAでこういう事は可能でしょうか?

    エクセルで同一セル内に存在する特定の文字を検出する方法を教えて下さい。 (例) A1のセルに 変更(2004/10/21) 変更(2004/1/15) 変更(2004/5/10) B1のセルに 変更(2004/10/3) 変更(2004/10/1) 削除(2004/7/23) 上記のようなデータがあるとします。検索条件として、変更の文字が付いてて、日付が(2004/10)のみデータだけ検出したいのです。上記の例で言うと、3件。 VBAを使って上記の条件でデータを抽出する事は可能でしょうか?

  • エクセル2007です。セルの塗りつぶしを自動に実行するVBAについて、

    エクセル2007です。セルの塗りつぶしを自動に実行するVBAについて教えてください。システム日付でVBAを使用したいのですが横軸に日付(2010/1/1~2015/12/31)、縦軸に時間(0~24まで)があるシートです。日付と時間がマッチしたところのセルを緑色に塗りつぶしたいと思います(スケジュール表を作成中です)。VBA初心者ですが、記述等教えていただきたいと思います。よろしくお願いします。

  • Excel VBAについて教えて下さい。

    VBAについて2点ほど質問があります。 (1)複数セル(例:A2:A40)に入力されている文字列を一括で数値に変換するVBAはありますか? (2)複数セル(例:A2:A40)に日付と時間が入力されていて(例:2019/09/12 16:00)、それを一括で日付と時間それぞれ別々のセルへ表示させるVBAはありますか? 現状、1つのセルしか変換できず複数一度には難しいのでしょうか? お分かりの方いましたら、是非ご教示お願い致します。

  • エクセルVBA 日付の評価、大小を比べるには

    エクセルのセルに日付データーが入っています。 その値を取得して、他のセルに入っている日付と比べたいのですが、 日付データをどの形に変換して比べればいいか分かりません。 ___|_____A_________|_____B___________|______C_____ 1_|_2007/6/1__|__2007/7/1__|____________ 2_|_2007/7/1__|__2007/7/23_|____________ 例えば上の表があったとして、A列とB列にある日付を比べて、大きい 方をC列に記入するということをVBAでしようとするとき、セルに入って いるデーター形式をどの形に変換して評価すればいいでしょうか? 日付データーをシリアル値に変換する方法とかあるのでしょうか? どなたか教えていただけないでしょうか?

  • エクセルVBAでセル選択

    エクセル2000でリストを作成し、VBAで編集しようとしています。 A列に入力されているコードの先頭に「’」をつけて文字列とするための関数をB2のセルからA列のデータが入力されている最後のセルの隣までコピーしたいと思っています。 A列の最終セルを取得するVBAは分かったのですが、その値をB列の選択範囲として使用する方法がわかりません。 エクセルVBAは全くの初心者です。 どなたか教えてください!

  • VBAでセルから書式情報を取得する方法

    こんにちは。 VBA初心者ですので、おかしな質問でしたら申し訳ありません。 入力済みのリストを参照して、削除線の引いてあるセルは飛ばして データを読んでいこうと思ったのですが、任意のセルが削除線が引いてある/引いていないの情報取得方法が分かりません。 色々調べてみて、色関係なら見つけたのですが、削除線のは探せませんでした。逆に削除線を設定する方法ならあったのですが・・・ どなたか、お力を貸していただけませんでしょうか? 御願い致します。

専門家に質問してみよう