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

色々探してやってもたのですが、うまくいかず教えていただけると助かります。
ネットで検索してコードを探してやってみたのですが、「12/13//2013」となったり動作しなかったりとうまくいきません。

20191213等の8桁の数字を2019年12月13日にVBAで変換したいです。
8桁の数字はB列にあり、多くても50行までとなります。(画像参照ください)
また8桁の数字は、数値ではなく文字列となっています。

よろしくお願いします。

「vba 8桁の文字列を日付に変更」の質問画像

A 回答 (4件)

No.2です。



>2019/12/13まで変換されたので、2019年12月13日にならないか模索中です

すなわち表示形式だけの問題でしょうか?

① 区切り位置の操作の場合は「完了」後
B列が選択されている状態で → 右クリック → セルの書式設定 → ユーザー定義から
「G/標準」となっている窓があると思います。
それを消去し、ご自身で
yyyy年m月d日 とか yyyy年mm月dd日 (←月・日を2桁表示にしたい場合)
のように入力しOK!

② VBAの場合は前回のコードの
>.NumberFormatLocal = "yyyy/mm/dd"
の行を
>.NumberFormatLocal = "yyyy年m月d日"
としてみてください。

※ 月・日を2桁表示にしたい場合は①の書式設定と同様に
m や d を二つ並べます。m(_ _)m
    • good
    • 0
この回答へのお礼

tom04さん お返事ありがとうございます。

完璧にうまくいきました。
tom04さんのアドバイスにはいつも感心させられます。

前回教えていただいた、条件付き書式はすごくよかったです。
条件付き書式はまったく知りませんでした。

条件付き書式をvbaに入れて、今でも毎日活躍中です。

お礼日時:2019/12/14 16:55

マクロで実現したければ以下はいかがでしょうか?



Sub Sample()

 Dim 行 As Long
 Dim 文字 As String
 Dim 日付 As Date
 
 For 行 = 2 To Cells(Rows.Count, 2).End(xlUp).Row
  文字 = Cells(行, 2).Value
  日付 = CDate(Left(文字, 4) & "/" & Mid(文字, 5, 2) & "/" & Right(文字, 2))
  Cells(行, 2).NumberFormatLocal = "yyyy""年""m""月""d""日"""
  Cells(行, 2).Value = 日付
 Next
 
End Sub
    • good
    • 0
この回答へのお礼

お返事ありがとうございます。

コードを試してみたらうまくいきました。
本当にありがとうございます。

お礼日時:2019/12/14 16:58

こんにちは!



一番簡単な方法としては、VBAを使わず
B列すべてを範囲指定 → メニューの「データ」 → 区切り位置 → 何もせず「次へ」を2回
「日付」を選択(YMD)になっているコトを確認し「完了」!
セルの表示形式は好みで!
たとえばユーザー定義から yyyy/mm/dd のようにしてください。

どうしてもVBAでやりたい場合は・・・
一例です。

Sub Sample1()
 Dim i As Long
 Dim myY As Long, myM As Long, myD As Long

  For i = 2 To Cells(Rows.Count, "B").End(xlUp).Row
   With Cells(i, "B")
    myY = Int(.Value / 10000)
    myM = Int((.Value Mod 10000) / 100)
    myD = .Value Mod 100
     .NumberFormatLocal = "yyyy/mm/dd"
     .Value = DateSerial(myY, myM, myD)
   End With
  Next i
End Sub

こんな感じではどうでしょうか?m(_ _)m
    • good
    • 1
この回答へのお礼

tom04さん いつもありがとうございます。

早速やってみたのですが、ほぼうまくいきました。
2019/12/13まで変換されたので、2019年12月13日にならないか模索中です。

変換するには、選択してNumberFormatLocalで変換すればよろしいでしょうか?

お礼日時:2019/12/14 16:33

「20190101」の場合は次のどれにしたいのでしょうか?


①「2019年1月1日」(シリアル値)
②「2019年1月1日」(文字列)
③「2019年1月1日」(文字列)月や日が1桁の場合は全角数字
④「2019年01月01日」(シリアル値)
⑤「2019年01月01日」(文字列)
⑥ その他(具体的に説明して下さい)
    • good
    • 0
この回答へのお礼

お返事ありがとうございます。
シリアル値と文字列の日付の違いを検索していました。

①だと思います。

エクセルで2013/12/13と入力した後、右クリックでセルの書式設定
分類に日付と設定したのと同じ日付でお願いします。

お礼日時:2019/12/14 16:21

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

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


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