人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

空白行挿入のエクセルマクロの作成をお願いします。

A列?X列までデータが入っています。
1行目は見出し行です。

複数対象列(J,K,L,N,O)のデータの重複が終わったところで空白行を挿入するマクロを希望しています。例を添付しました。

1506932110
●拡大する

●質問者: tororosoba
●カテゴリ:コンピュータ
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● a-kuma3
●800ポイント ベストアンサー

こんな感じでどうでしょう。

Sub insert_row()
 Dim prev
 col_s = 10  ' J列
 col_e = 14  ' N列
 ReDim prev(col_s To col_e)

 last_row = Cells(Rows.Count, 10).End(xlUp).Row
 For c = col_s To col_e
 prev(c) = Cells(last_row, c).Value
 Next

 For r = last_row - 1 To 1 Step -1
 For c = col_s To col_e
 If Cells(r, c).Value <> prev(c) Then
 Rows(r + 1).Insert
 Exit For
 End If
 Next
 For c = col_s To col_e
 prev(c) = Cells(r, c).Value
 Next
 Next
End Sub

対象のシートを選択した状態で、insert_row サブルーチンを実行してください。
J?N列には、空白のセルがない前提です。


追記です。
M列が比較の対象外ということに気が付きませんでした m(_ _)m
M列を比較の対象外にしたコードは以下のようになります。

Sub insert_row()
 Dim prev
 col_s = 10  ' J列
 col_e = 15  ' O列
 ReDim prev(col_s To col_e)

 last_row = Cells(Rows.Count, 10).End(xlUp).Row
 For c = col_s To col_e
 prev(c) = Cells(last_row, c).Value
 Next

 For r = last_row - 1 To 1 Step -1
 For c = col_s To col_e
 If c <> 13 And Cells(r, c).Value <> prev(c) Then
 Rows(r + 1).Insert
 Exit For
 End If
 Next
 For c = col_s To col_e
 prev(c) = Cells(r, c).Value
 Next
 Next
End Sub

tororosobaさんのコメント
ありがとうございます。 使わせていただいたのですが、二行目以降から一行ごとに空白行が挿入されてしまうようです。JKLMNのデータ重複が途切れた各箇所で空白行を挿入するのは無理でしょうか。

a-kuma3さんのコメント
質問に添付された画像が、そうなっています。 J?N列の値で、どれかひとつでも重複が切れたときに行を挿入するようにしています。

tororosobaさんのコメント
M列を削除してマクロを実行してみたら添付のような結果になったのですが、非対象列のM列を残したままこのマクロを使うことはできないでしょうか?

a-kuma3さんのコメント
あ、M列は対象外なんですね。 直します。

a-kuma3さんのコメント
直しました。 回答に追記しています。

tororosobaさんのコメント
お手を煩わせて申し訳ございませんでした。 希望通りに動きました! 本当に助かりました、ありがとうございます!
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ