- ベストアンサー
複数行に空白行を一括で挿入したいのですが
エクセルに関する質問です。 セルA列の14行目から30000行まである数字が入力されています。 各行間に一行ずつ空白行を挿入したのですが マクロを使ったやりかたでもかまいませんので 一括でする方法があれば教えていただけないでしょう?
- みんなの回答 (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
その他の回答 (5)
- tom04
- ベストアンサー率49% (2537/5117)
こんにちは! 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
お礼
いろいろやり方があるのですね 教えていただいたやり方も一度ためしてみます。 ありがとうございました。
- KURUMITO
- ベストアンサー率42% (1835/4283)
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列を選択して削除すれば完成です。
お礼
いろいろやり方があるのですね 教えていただいたやり方も一度ためしてみます。 ありがとうございました。
- K Kazz(@JazzCorp)
- ベストアンサー率31% (549/1751)
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
お礼
いろいろやり方があるのですね 教えていただいたやり方も一度ためしてみます。 ありがとうございました。
- mar00
- ベストアンサー率36% (158/430)
Sub Macro1() For i = Cells(Rows.Count, 1).End(xlUp).Row To 15 Step -1 Range("A" & i).EntireRow.Insert Next i End Sub という感じでどうでしょうか>
お礼
いろいろやり方があるのですね 教えていただいたやり方も一度ためしてみます。 ありがとうございました。
- 某HN クロメート(Chromate)(@CoalTar)
- ベストアンサー率40% (705/1742)
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列削除
お礼
いろいろやり方があるのですね 教えていただいたやり方も一度ためしてみます。 ありがとうございました。
お礼
ありがとうございます。 一発でできました。 たすかりました。