• ベストアンサー

複数行に空白行を一括で挿入したいのですが

エクセルに関する質問です。 セルA列の14行目から30000行まである数字が入力されています。 各行間に一行ずつ空白行を挿入したのですが マクロを使ったやりかたでもかまいませんので 一括でする方法があれば教えていただけないでしょう?

質問者が選んだベストアンサー

  • ベストアンサー
回答No.6

#1です。for~nextを試したところ非常に時間がかかりそうだったので、自分の回答をもとにマクロを作ってみました。 Sub 行を1行とびにする() Application.ScreenUpdating = False   Dim i As Long '変数定義   i = Cells(Rows.Count, 1).End(xlUp).Row 'A列の最終行の行番号   Columns("A:A").Insert Shift:=xlToRight 'A列追加   Range("A14") = 1 'A14セルに1 'フィル 加算1   Range("A14").DataSeries Rowcol:=xlColumns, Type:=xlLinear, Date:=xlDay, _     Step:=1, Stop:=i - 13, Trend:=False   Range("A" & i + 1) = 1 'A列の最終行+1セルに1 'フィル 加算1   Range("A" & i + 1).DataSeries Rowcol:=xlColumns, Type:=xlLinear, Date:=xlDay, _     Step:=1, Stop:=i - 13, Trend:=False '並べ替え   Range("A14").CurrentRegion.Sort Key1:=Range("A14"), Order1:=xlAscending, Header _     :=xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom _     , SortMethod:=xlPinYin, DataOption1:=xlSortNormal 'A列削除   Columns("A:A").Delete Shift:=xlToLeft Application.ScreenUpdating = True End Sub

fansasad
質問者

お礼

ありがとうございます。 一発でできました。 たすかりました。

その他の回答 (5)

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.5

こんにちは! VBAで最終行からループさせる方法が一番簡単だと思いますが そこそこ時間がかかると思いますので、他の方法の一例です。 画面左下の操作したいSheet見出し上で右クリック → コードの表示 → VBE画面に ↓のコードをコピー&ペーストしてマクロを実行してみてください。 (Alt+F8キー → マクロ → マクロ実行です) Sub 行挿入() 'この行から Dim i As Long, j As Long i = Cells(Rows.Count, 1).End(xlUp).Row Application.ScreenUpdating = False Columns(1).Insert Range(Cells(14, 1), Cells(i, 1)).Formula = "=row(A1)" Range(Cells(14, 1), Cells(i, 1)).Copy Cells(Rows.Count, 1).End(xlUp).Offset(1).Select Selection.PasteSpecial Paste:=xlValues i = Cells(Rows.Count, 1).End(xlUp).Row j = UsedRange.Columns.Count Range(Cells(14, 1), Cells(i, j)).Sort key1:=Cells(13, 1), order1:=xlAscending Columns(1).Delete Cells(14, 1).Select Application.ScreenUpdating = True End Sub 'この行まで こんな感じではどうでしょうか?m(_ _)m

fansasad
質問者

お礼

いろいろやり方があるのですね 教えていただいたやり方も一度ためしてみます。 ありがとうございました。

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.4

A列のセルには30000行まで空白のセルが無いものとします。 例えば表はF列まで使用されているとしたらG1セルには次の式を入力します。 =IF(A1<>"",ROW(A1),IF(ROW(A1)>COUNTA(A:A),ROW(A1)-COUNTA(A:A)+14,"")) G1セルをコピーしてから名前ボックスにはG1と表示されているところをG:Gのように変更し、Enterキーを押します。G列が選択状態になりますので右クリックして「貼り付け」を行います。 これによって数値がG列に表示されますので、そのG列を選択してから右クリックして「コピー」し、そのままの状態で再び右クリックして「形式を選択して貼り付け」で「値」にチェックをして貼り付けます。 これで今まではG列のセルに式が入力されていたのですが式が消えてなくなります。 次にA列からG列までを選択してから「ホーム」タブの「並べ替えとフィルター」から「ユーザー設定の並べ替え」を選択します。 最優先されるキーをG列にして昇順にしてOKします。 最後にG列を選択して削除すれば完成です。

fansasad
質問者

お礼

いろいろやり方があるのですね 教えていただいたやり方も一度ためしてみます。 ありがとうございました。

回答No.3

Sub By2() Dim i As Long For i = Range("A" & Rows.Count).End(xlUp).Row + 1 To 15 Step -1 Rows(i & ":" & i).Insert shift:=xlDown Next End Sub

fansasad
質問者

お礼

いろいろやり方があるのですね 教えていただいたやり方も一度ためしてみます。 ありがとうございました。

  • mar00
  • ベストアンサー率36% (158/430)
回答No.2

Sub Macro1() For i = Cells(Rows.Count, 1).End(xlUp).Row To 15 Step -1 Range("A" & i).EntireRow.Insert Next i End Sub という感じでどうでしょうか>

fansasad
質問者

お礼

いろいろやり方があるのですね 教えていただいたやり方も一度ためしてみます。 ありがとうございました。

回答No.1

0. A列のデータに空白がないものとして 1. A列を挿入 2. A14セル1 3. A15セル2 4. A14:A15セルを選択して 5. フィルハンドルをダブルクリック 6. [Ctrl]+[C]そのままコピー 7. [Ctrl]+[↓]再下端へ移動 8. [↓]もう一つ下 9. [Ctrl]+[V]貼り付け 10. A列のセルを1つ選択して 11. 昇順で並べ替え 12. A列削除

fansasad
質問者

お礼

いろいろやり方があるのですね 教えていただいたやり方も一度ためしてみます。 ありがとうございました。

関連するQ&A