プロが教える店舗&オフィスのセキュリティ対策術

エクセルの所定の列にある日時データから時間部分を削除したいのですが、削除したい列が複数あるためマクロで一気に削除したいです。
どのようなマクロを組めばよいか教えてください。
サンプル画像のB列とE列について、時間を削除した日付のみに(2022/4/1のように)変換したいです。
よろしくお願いいたします。

「VBA 指定した列にある日時データから時」の質問画像

A 回答 (4件)

シート名:Sheet1で、B列、E列の例です。




Dim Cnt As Long
Set SH = Worksheets("Sheet1")

'B列処理
END1 = SH.Range("B65536").End(xlUp).Row
for Cnt = 2 to END1
SH.Range("B" & Cnt).NumberFormat = "yyyy/m/d"
Next Cnt

'E列処理
END1 = SH.Range("E65536").End(xlUp).Row
for Cnt = 2 to END1
SH.Range("E" & Cnt).NumberFormat = "yyyy/m/d"
Next Cnt
    • good
    • 2

こんにちは



表示だけ yyyy/m/d の形式になれば良いのであれば、

Intersect(ActiveSheet.UsedRange, Union(Columns(2), Columns(5))) _
.NumberFormat = "yyyy/m/d"

でよろしいかと。(値はそのままで保持されます)


実際の値も日付部分のみ(時刻部分を削除)にしたければ、
Dim rng As Range, c As Range, col As Long

For col = 2 To 5 Step 3
Set rng = Intersect(ActiveSheet.UsedRange, Columns(col))
For Each c In rng.Cells
If IsDate(c.Value) Then c.Value = Int(c.Value)
Next c
rng.NumberFormat = "yyyy/m/d"
Next col
    • good
    • 1

No.2続き


書式からもデータからも時刻をなくしてしまうには、
SH.Range("B" & Cnt).NumberFormat = "yyyy/m/d"の後に

SH.Range("B" & Cnt).Value =INT(SH.Range("B" & Cnt).Value)
を追加して下さい

E列も同様に。
    • good
    • 1

おはようございます。



時間は、Excelでは小数部分になりますので、小数を消せば良いだけです。
マクロ内で、INTで小数を消せば、2022/4/1 0:00になるかと。

関数でも、A2セルに、=INT(B2)として、コピー&値で貼り付けでも
それ程手間が掛からないと思います。

最後に、表示形式で日付(時間を除く)で良いかと。
    • good
    • 1

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

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


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