[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『入力のある各列の一番下のセルを取得したい』(shosinsya)
はじめまして、VBA初心者です。
B〜D列の3行目から数値・文字の入力があるシートがあります。
その数値、文字から先頭の余白、'を削除したかったので、
Sub 削除()
Dim i As Long
For i = 3 To 100 Cells(i, 2) = Replace(Cells(i, 2), "'", "") Cells(i, 2).Value = Trim(Cells(i, 2).Value) Cells(i, 3) = Replace(Cells(i, 3), "'", "") Cells(i, 3).Value = Trim(Cells(i, 3).Value) Cells(i, 4) = Replace(Cells(i, 4), "'", "") Cells(i, 4).Value = Trim(Cells(i, 4).Value) Next
End sub
というVBAを作ったのですが、時間が少々かかるためデータの入力がある最終行を取得するようにしようと、色々と調べて次のようにいじりました。
Sub 削除2()
Dim i As Long
For i = 3 To Cells(Rows.count, 1).End(xlUp).Row Cells(i, 2) = Replace(Cells(i, 2), "'", "") Cells(i, 2).Value = Trim(Cells(i, 2).Value) Cells(i, 3) = Replace(Cells(i, 3), "'", "") Cells(i, 3).Value = Trim(Cells(i, 3).Value) Cells(i, 4) = Replace(Cells(i, 4), "'", "") Cells(i, 4).Value = Trim(Cells(i, 4).Value) Next
End sub
ですが、文字から先頭の余白、'を削除してくれなくなってしまったので、どこが間違えているのか、どのように直せばよいか教えていただけないでしょうか。
< 使用 Excel:Excel2010、使用 OS:Windows10 >
A列の最終行を取得していますね。
A列にも、データがあるのでしょうか?
(わからん) 2022/01/13(木) 11:26
Sub 削除3()
Dim i As Long
Dim j As Long
Dim k As Long
For i = 3 To Cells(Rows.count, 2).End(xlUp).Row Cells(i, 2) = Replace(Cells(i, 2), "'", "") Cells(i, 2).Value = Trim(Cells(i, 2).Value) Next For i = 3 To Cells(Rows.count, 3).End(xlUp).Row Cells(i, 3) = Replace(Cells(i, 3), "'", "") Cells(i, 3).Value = Trim(Cells(i, 3).Value) Next For i = 3 To Cells(Rows.count, 4).End(xlUp).Row Cells(i, 4) = Replace(Cells(i, 4), "'", "") Cells(i, 4).Value = Trim(Cells(i, 4).Value) Next
End sub
という形になるのでしょうか。
もう少しまとめる方法があれば教えて欲しいです。
(shosinsya) 2022/01/13(木) 12:05
A列にデータがないなら、「Cells(Rows.count, 1).End(xlUp).Row」は1になりますので、
ループしません。
>B、C、D列それぞれの最終行を取得
それぞれの列で最終行が異なるなら、ご提示のようにするしかありません。
同じなら、どこかの列の最終行を取得すればいいでしょう。
(わからん) 2022/01/13(木) 12:48
わずか300セルで、体感できるとも思えませんが?
Sub test() With ActiveSheet.UsedRange.Columns("B:D") .Replace "'", "", xlPart .Value = Application.Trim(.Value) End With End Sub
(マナ) 2022/01/13(木) 15:01
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.