プロが教えるわが家の防犯対策術!

エクセルで、2行おきに1行追加する方法

行が2000行位あるデータについて、
1行毎では時間がかかるので、
他の方法(マクロでも作業列等)を教えて下さい。



行1 A
行2 B
行3 C
行4 D
行5 E
行6 F
行7 G
行8 H
   
上記2000行のデータを下記のように行追加をしたいのです。

行1 A
行2 B
行追加
行3 C
行4 D
行追加
行5 E
行6 F
行追加
行7 G
行8 H

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

A 回答 (7件)

たとえば2行おきの場合。



添付図:
隣列に,B1に数字の1,B2に数字の2を置いてB1:B2をオートフィルドラッグして連番を記入させます。
その下に,2行おきならまず2を記入,そして4を記入してオートフィルドラッグして2,4,6,8の数字を作ります。
AB列をB列昇順で並べ替えると出来上がりです。


n行置きの場合も同様に,B列下に継ぎ足す数字をnおきの数字に作って操作すれば出来ますね。
また,下に継ぎ足す数字の開始番号を調整すれば,どこから空を挿入するか微調整するのも容易です。
「エクセルで、2行おきに1行追加する方法」の回答画像1
    • good
    • 6
この回答へのお礼

簡単でわかり易いご回答をありがとうございました。
とても助かりました。又、何か会ったときにはよろしくお願いいたします。

お礼日時:2011/01/15 12:00

私がよくする方法です。



仮にA列を追加します。(A列を選択して右クリック⇒挿入)
A1に 1 ,A2に 2 を入力
A3に =A1+3 を入力
A3をコピーし、元のデータが入力されている最終行まで貼り付ける(A列には1 2 4 5 7 ・・・と入るはずです)
A列の貼り付けた下に3を入力
その下に =(上記で入力したセル)+3 を入力 コピー
必要なだけA列のその下に貼り付け(3 5 8 ・・・となるはず)
A列を選択⇒コピー⇒値を貼り付ける
表全体を選択⇒A列を優先し昇順で並べ替え
A列を選択⇒削除

文字で書けば長ったらしいですが、一旦やってみればすぐに出来ます。
    • good
    • 1

1、一番左に列を一列追加します



2、追加したA列のセルに以下のように値と数式を入れます

A1 1
A2 1
A3 =IF(A1=A2,A2+1,A2)
A4以降 A3をコピーして貼り付け

これで左端に「1 1 2 2 3 3 4 4 5 5...」という並びができます。

3、A列の一番下に「1 2 3 4 5...」と値を入れます
(「=A1+1」のような数式を使ってください)

4、A列全体を選んで「コピー」→「形式を選択して貼り付け」で「値」で貼り付けます

5、「並び替え」でA列をキーに昇順で並び替えます

以上です。
    • good
    • 0

数式などを使用せず、補助列に簡単な文字列を使って直感的なオートフィル操作で空白行を入れるなら、以下のような操作が簡単かもしれません。



2行に1行空白行を挿入するなら、補助列の一番上に「1a」「1b」と入力して、この2つのセルをオートフィルコピー(セルの右下をダブルクリック)します。
その下のセルには「1c」と入力して下方向にオートフィルします。
これでこの列を基準に昇順に並べ替えてみてください。
    • good
    • 1

マクロ例です。


対象シートタブで右クリック→コードの表示→以下のコード貼り付け→F5キー押下(2000行なので少し間が空きます)

Sub 行数毎に空白行挿入()
Application.ScreenUpdating = False
行数 = 2
Range("A1").Select
Do While ActiveCell.Offset(行数).Value <> ""
ActiveCell.Offset(行数, 0).Rows("1:1").EntireRow.Select
Selection.Insert Shift:=xlDown
ActiveCell.Offset(行数 - 1).Select
Loop
Application.ScreenUpdating = True
End Sub
    • good
    • 1

こんばんは!


一例です。

ごくごく簡単なVBAです

Sub test()
Dim i As Long
i = 1
Do Until Cells(i * 3, 1) = ""
Rows(i * 3).Insert (xlDown)
i = i + 1
Loop
End Sub

こんな感じではどうでしょうか?m(__)m
    • good
    • 2

普通はVBAでやりますでしょう。


オートフィル+並べ替えも工夫してできると思う。
ーー
関数なら
例データ
シート1にA1:A9・・・・に
1
2
3
4
5
6
7
8
9
・・・
Sheet2のA1に
=IF(MOD(ROW(),3)=0,"",INDEX(Sheet1!$A$1:$A$100,ROW()-INT(ROW()/3)))
下方向に式を複写して
結果
1
2

3
4

5
6

7
8

9
10
まずわかりやすいように1列だけでやっているが、複数列の場合
INDEX関数の列を指定するところへ
=IF(MOD(ROW(),3)=0,"",INDEX(Sheet1!$A$1:$D$100,ROW()-INT(ROW()/3),COLUMN()))
として
Sheet1のデータ
111
212
313
414
515
616
717
818
919
1020
1121
1222
ーーー
Sheet2の結果
111
212

313
414

515
616

717
818

919
1020
のようにできる。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A