ここから本文です

シートのA1:T250までデータが入っており、J列に商品名が入っております。 商品名...

pok********さん

2018/2/1217:39:56

シートのA1:T250までデータが入っており、J列に商品名が入っております。
商品名が異なる場合、空白行を挿入したく、今現在は以下のマクロを使用しております。

しかし、最終行の取得が最終行から行っているため、PCスペックにもよるかもしれませんが、
時間がかかるため、A1:T500までの範囲で処理すれば時間短縮できるのかなと。

最終行ではなく、選択範囲(A1:T500)だけのマクロを教えていただけませんか?


Dim 行 As Long
Dim c As Object

Const 列 = 10
For 行 = Cells(Rows.Count, 列).End(xlUp).Row To 3 Step -1

If Cells(行, 列) <> Cells(行 - 1, 列) Then
Rows(行).Insert
End If
Next 行


For Each c In Range("A2:U4") '範囲をセット
If c.Value = "" Then '空白の判断
c.Delete Shift:=xlUp '削除 上方向指定
End If

Next

閲覧数:
57
回答数:
2
お礼:
100枚

違反報告

ベストアンサーに選ばれた回答

プロフィール画像

カテゴリマスター

tra********さん

2018/2/1316:00:25

1行ずつ行追加したり、1セルずつ削除するのは効率悪いでしょうね。
全体をとらえて一気に...。というのが定跡的手順ですね。

Dim 行 As Long, xAdr As String, rng As Range
Const 列 = 10
Application.ScreenUpdating = False
For 行 = Cells(Rows.Count, 列).End(xlUp).Row To 3 Step -1
If Cells(行, 列) <> Cells(行 - 1, 列) Then
xAdr = xAdr & "," & Cells(行, 列).EntireRow.Address(False, False)
End If
Next 行
If xAdr <> "" Then Range(Mid(xAdr, 2)).Insert

On Error Resume Next
Set rng = Range("A2:U4").SpecialCells(xlCellTypeBlanks) '範囲をセット
If Err.Number = 0 Then
rng.Delete Shift:=xlUp '削除 上方向指定
End If
On Error GoTo 0
Application.ScreenUpdating = True

  • 質問者

    pok********さん

    2018/2/1323:16:16

    9行目のRangeからデバックが発生します。
    If xAdr <> "" Then Range(Mid(xAdr, 2)).Insert

    きっと簡単に修正できるのかもしれませんが、私にはまったくわからず。。。

    どのように修正したらよろしいでしょうか?

    よろしくお願いいたします。

  • その他の返信(1件)を表示

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

この質問は投票によってベストアンサーに選ばれました!

ベストアンサー以外の回答

1〜1件/1件中

yum********さん

2018/2/1313:16:17

シートの最終行Rows.Countから
データの最終行Cells(Rows.Count, 列).End(xlUp).Rowを
取得することにはほとんど時間はかかりませんし、
Forループに入る時に一度取得されるだけですので影響は小さいと思います。
「時間がかかる」ということですが、現状が1秒かからない程度なら、それぐらいだと思いますし、もっと数十秒などの時間がかかるならこのVBAが問題なのではなくほかの問題(シートの数がたくさんあるとか、他のシートにたくさんデータが有る、EXCEL以外にもたくさんアプリケーションを開いているなど)ではないでしょうか。

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる