• 締切済み

エクセルの表で10行毎に1行づず新しい行を挿入する方法

こんにちは。 あるエクセルの表があります。1500行くらいあるのですが、10行毎に1行づつ新しい行を挿入したいのですが、 一気に簡単に実行する方法はありませんか? 初心者なのでとても苦労しています… 地道にやるしかありませんか? どなたか教えて下さい。

みんなの回答

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.8

A列にデータがあるとして、作業列B列のB1に10、B2に20といれ、フィルハンドルを出し、下へ最終行まで引っ張ります。 10、20,30、・・・と番号が振られます。 最終行の次にA列空白、B列に11、 その下にB列に21と入れて、+ハンドルを出し最終行の番号を凝れるまで引っ張ります。 11、21,31,41、・・・と10づつ増えます。 B列で並べ替えしてください。 10の後に11(=A列空白)、20の後に21(=A列空白)・・が収まります。 これで10行おきに、空白行が入ります。 B列を削除してください。

  • e10go
  • ベストアンサー率38% (47/122)
回答No.7

既に、実現可能な回答が出ているようですが、他にも方法があるという事で、回答させていただきます。 先ずは、マクロの方法を以下に示します。 '--------マクロコード--------始まり Sub Macro1()   Dim i1 As Integer   For i1 = 1501 To 11 Step -10     Rows(i1 & ":" & i1).Insert Shift:=xlDown   Next i1 End Sub '--------マクロコード--------終わり 上の例では、各10行毎に行全体を挿入していますが、一部の列のみ挿入するなら、     Rows(i1 & ":" & i1).Select を     Range("C" & i1).Insert Shift:=xlDown 'これは、C列のみ挿入 に変えてください。 マクロを使わずにやれる方法を以下に示します。 10行毎に空白を入れるには、1.各行に行番号を振り、2.それと10行毎の中途半端な行番号(9.1,19.1,29.1等)を作り、3.それを組み合せてソートする、という方法でできます。 なお、前提条件として、B列,C列が空いている物とします。 1. B1セルに「=ROW()」を入れる。 B1の式をB2~B1500セルにコピーペーストする。 2. C1セルに「=ROW()*10+0.1」を入れる。 C1の式をC2~C150セルにコピーペーストする。 3. B列,C列を選択して、コピーする。 「編集」メニューの「値を選択して貼り付け」で「値」を選択して「OK」をクリックする。 C1~C150セルを選択して、コピーする。 B1501セルにペーストする。 シート全体を選択する。(「Ctrl」+「A」) 「並び替え」を行なう。この時「最優先されるキー」を「列B」にする。 この後、B列,C列は不要なので、削除する。 B列,C列を削除する。

  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.6

#3 です。。 #3 だと、総行数が 10 で割り切れないと変なところ に空行を挿入してしまいますね、、 スルーして下さい。すみません。

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.5

こんにちは。 Sortメソッドがひじょうに速いので、挿入させる場合も、以下のようにしたらよいかと思います。一応、補助列は、IV列(一番最後の列)を使っています。しかし、これは、手作業でも簡単に出来ます。補助列を使って、フィルダウンか、数式で、1~1500までを作り、その最後の行の次から、 "=ROW(A1)*10" を入れて、並べ替えをすればよいです。 Sub InsertBlankRow() Dim LastRow As Long Const TMP_COL As String = "IV" '補助列 LastRow = Range("A65536").End(xlUp).Row Application.ScreenUpdating = False With Range(TMP_COL & "1").Resize(LastRow)   .FormulaLocal = "=Row()"   .Value = .Value   .Offset(LastRow).Resize(Int(LastRow / 10)).FormulaLocal = _     "=ROW(A1)*10"   .Offset(LastRow).Resize(Int(LastRow / 10)).Value = _     .Offset(LastRow).Resize(Int(LastRow / 10)).Value End With Range("A1:" & TMP_COL & LastRow + Int(LastRow / 10)).Sort _     Key1:=Range("IV1"), _     Order1:=xlAscending, _     Header:=xlNo, _     OrderCustom:=1 Range(TMP_COL & "1").EntireColumn.ClearContents Application.ScreenUpdating = True End Sub

回答No.4

関数でやる方法です。 A列を10行おきに1行あけるには、 =IF(MOD(ROW(),11)=0,"",OFFSET(OFFSET($A$1,INT(ROW()/11)*10,),ROW()-1-INT(ROW()/11)*11,)) をコピー先の先頭行に入れてください。そしてそれを、縦方向に適当なところまでコピーしてください。 B列を10行おきに1行あけるには、上記の「$A$1」を「$B$2」と置き換えてください。 いかがでしょうか。

  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.3

こんにちは。KenKen_SP です。 このような処理の場合、最終行から上に向かってループさせます。 開始行から下に向けてやると Insert で行数が増えて、最後まで 処理できないからです。 Sub Sample()   Dim i As Long   Dim r As Long      With ActiveSheet.UsedRange     r = .Rows(.Rows.Count).Row   End With   Application.ScreenUpdating = False   For i = r + 1 To 10 Step -10     ActiveSheet.Rows(i).Insert Shift:=xlDown   Next i End Sub

  • Batistuta
  • ベストアンサー率28% (24/84)
回答No.2

マクロを使うと簡単なのですが、マクロの使い方を初心者に説明するのがなかなか難しいです^^; とりあえずマクロで1500行分、10行毎に行挿入するプログラムを以下に書きました。 Sub Macro1() For Idx = 10 To 1500 Step 10 Rows(Idx & ":" & Idx).Insert Shift:=xlDown Next Idx End Sub これを実行するには、以下の手順でマクロを作成して実行します。 1.メニューより、ツール→マクロ→新しいマクロの記録 2.メニューより、ツール→マクロ→記録の中止 3.メニューより、ツール→マクロ→Visual Basic Editor 4.左ペインにある「標準モジュール」をダブルクリック 5.「Module1」をダブルクリック 6.「Sub Macro1()」と「End Sub」の間に上記のプログラムを書きます 7.エクセルに戻り、メニューより、ツール→マクロ→マクロ 8.Macro1を選択し、実行を押します。

  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.1

以下の方法は如何でしょうか。  A1:A1500にデータが入っているとし,B列を作業列とします。 1.B2:B10に任意文字を入力 2.B2:B11を選択してフィルハンドルをダブルクリック →B2:B1500が選択された状態 3.Ctrl+G (メニュー[編集]-[ジャンプ]) 4.[セル選択]ボタンをクリック 5.[空白セル]にチェック→OK 6.選択された空白セル上で右クリック 7.[行全体]にチェック→OK 8.B列を削除

関連するQ&A

専門家に質問してみよう