プロが教えるわが家の防犯対策術!

日付の書式がダブルクリックしないと反映されません。
大量にデータがある為、マクロで一気に書式の変更が反映されるようにしようと思っています。

年月日    マクロ後
H01/06/01  1989/6/1
H22/04/01  2010/4/1  
H16/04/01  2004/4/1  
H24/05/01  2012/5/1
H25/03/16  2013/3/16


Sub Macro2()
With ActiveSheet
.Columns(6).TextToColumns
End With
end sub

前まではこのマクロでできていた気がするのですが、反映されなくなりました。
マクロの記録をして、覚えさせた後に同じことをしても反映されなくなりました。
どなたかいい方法を教えてください。よろしくお願いします。

A 回答 (2件)

ANo1です。



>中身は同じくH01/06/01のままで、ダブルクリックしないと変化がありません。
おやっ?! 元のデータは日付型ではなく、単なる文字列になっているのでしょうか?

>前まではこのマクロでできていた気がするのですが、反映されなくなりました
想像ですが、データの条件(型)が変わったために処理できなくなったのではないでしょうか?

・・・それでは、こんな感じでは?
 For Each c In ActiveSheet.Range("F1:F1000")
  c.Value = Format(c.Text, "yyyy/m/d")
 Next c
※ 一括ではできないため、F列内のセルを順に処理していますので、範囲を限定しておかないと時間がかかることがあります。(上例では、F1~1000に設定してあります。)
※ 上の例は文字列データの"H01/06/01"等を、文字列データの"yyyy/m/d"形式に変更するものです。
※ 元のデータに日付型も混在している場合や、結果を日付型にしたい場合は、上の処理の前に(ANo1の要領で)セルの書式を"yyyy/m/d"に設定しておけばよいでしょう。
(そうすることで、元のデータが文字列、日付型かにかかわらず、日付型に変換することができるようになると思います)
    • good
    • 1
この回答へのお礼

助かりました

元のデータは文字列です。texttocolumnsの前に設定変更していますが、変化ありませんでした。

>想像ですが、データの条件(型)が変わったために処理できなくなったのではないでしょうか?
私もそんなところかなぁと思っています。texttocolumns便利だったのにな。

出来るようになりました。
詳しく説明していただき、ありがとうございました。

お礼日時:2017/07/13 16:13

こんにちは



F列全体に「yyyy/m/d」形式で書式をセットしたいということと解釈しました。

ActiveSheet.Columns(6).NumberFormat = "yyyy/m/d"

で、どうでしょうか?
    • good
    • 0
この回答へのお礼

書式はセットできますが、中身は同じくH01/06/01のままで、ダブルクリックしないと変化がありません。

「yyyy/m/d」形式で表示がされなくてもいいのですが、最終的にやりたいことは西暦での検索です。言葉足らずで申し訳ありません。
1989/6で検索したら1行目がヒットするようにしたいのです。

お礼日時:2017/07/12 17:32

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A