[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『日付をyyyy-mm-ddに変換』(1222)
2022/12/22 のように日付属性で入力されているセルのデータを
2022-12-22 に変換したいのですが上手くいきませんでした。
記述ミスあるいはstring関数の併用が必要でしょうか?
試作1 WScsv.Columns(26).Replace What:="/", Replacement:="-", Lookat:=xlPart
試作2 WScsv.Columns(26).Format ("yyyy-mm-dd")
< 使用 Excel:Microsoft365、使用 OS:Windows10 >
表示だけで構わなければ WScsv.Columns(26).NumberFormatLocal = "yyyy-mm-dd" と表示形式を変更してはどうだろうか? (ねむねむ) 2022/12/22(木) 10:22:38
■2
なので↓のようなアプローチにしてみてはどうでしょうか?
1. データをいったん配列に取り込む 2. 1つずつ、Format関数で文字列に変換する 3. 表示形式を文字列に変更する(これをやらないとエクセル君のおせっかい機能が働いてしまう) 4. 配列から一気に書き出す
コードにするとこんな感じです。
Sub test1() Dim 配列 As Variant Dim i As Long
With Range("A1:A30") 配列 = .Value
For i = 1 To UBound(配列, 1) Step 1 配列(i, 1) = Format(配列(i, 1), "yyyy-mm-dd") Next i
.NumberFormatLocal = "@" .Value = 配列 End With End Sub
■3
また、作業列を使えるのであれば↓のようにする手もあります。
Sub test2() With Range("A1:A30") .Offset(, 1).Formula = "=TEXT(A1,""yyyy-mm-dd"")" .Offset(, 1).Copy .Cells.PasteSpecial Paste:=xlPasteValues .Offset(, 1).Clear End With End Sub
ただ、こちらの処理だと歯抜け(ブランクセル)があるとちょっと困ったことなります。
■4
質問から反れますが、そもそも論として本当に「WScsv.Columns(26)」全体を処理する必要があるのか再考されてみてはいかがでしょうか?
(ブックとして開いたのであれば100万行以上ありますよね?)
(もこな2) 2022/12/22(木) 11:46:12
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.