- ベストアンサー
行の挿入について指定した行数分を簡単にしたい
エクセルのA列に、A1=3、A2=5、A3=2 ---- と数字が並んでいます。この数字の行数分の挿入を、A1とA2の間に、次にA2とA3の間に、---行いたい。よろしくお願いします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
空行の挿入ってことでしょか... Sub Macro1() Range("A1").Select Do While (ActiveCell.Value <> "") For i = 1 To ActiveCell.Value ActiveCell.Offset(1, 0).EntireRow.Insert shift:=xlDown Next ActiveCell.Offset(ActiveCell.Value + 1, 0).Activate Loop End Sub
その他の回答 (3)
- imogasi
- ベストアンサー率27% (4737/17069)
VBAでやれば、簡単なロジックで出来ます。 しかし関数でやるとなると、やっと下記で出来たが難しい。 (例データ)A列です。ついでに関数の結果・中間結果も 下記に表示します。 A2:E22です。関数の結果も下記に含む。 A列 B列 C列 D列 E列 3 1 1 1 3 2 5 2 1 4 8 3 1 1 13 4 1 3 15 5 2 2 2 19 6 2 22 7 2 8 3 4 9 3 10 3 11 3 12 3 13 4 1 4 5 3 5 5 5 6 2 6 6 (関数式)B2に1、B3に=B2+A2+1、B3を下方向に複写して 、値は上記B列の通り。 C2に1、C3に2をいれて下へ+ハンドルを引っ張り、連番を振る。結果上記のC列の通り。 D2に=VLOOKUP(ROW()-1,$B$2:$C$11,2,TRUE)といれ、下方向に複写。結果は上記D列の通り。 E2に=IF(D1=D2,"",INDIRECT("A"&D2+1))といれ、下方向に複写。結果は上記のE列の通り。これが求めるものである。 B、C、D列は作業列で使わないやり方があれば、望ましいが 、出来るかな。 OKWEB上では数字の並びが崩れますが、エクセルにコピー貼りつけして、データ-区切り位置-スペース区切りを行って見てください。
お礼
imogasiさん、いつも的確なアドバイスをありがとうございます。ただ、今回は、私の質問文が分かりにくかったことで、ご迷惑をかけました。またよろしくお願いいたします。ご回答も、参考にさせていただきます。ありがとうございました。
- moon_piyo
- ベストアンサー率60% (88/146)
#2です。 挿入するのはA列のみ、のようですね であれば #2で書いたコードの一部を訂正するだけでよさそうな... ActiveCell.Offset(1, 0).EntireRow.Insert shift:=xlDown ↓ ActiveCell.Offset(1, 0).Insert shift:=xlDown
- imogasi
- ベストアンサー率27% (4737/17069)
>数字の行数分の挿入を、A1とA2の間に この意味が良く判らない。数値でも文字列でも同じだと思うので、区別のため文字列で、質問します。 A1=a、A2=b,A3=c,A4=d、・・・とします。 結果は A1=a A2=a A3=b A4=b A5=c A6=c ・・・ のようにしたいということでしょうか? 関数式なら(A列と別列になりますが) 第1行目に=INDIRECT("A"&INT((ROW()+1)/2)) と入れて下方向に複写すると a a b b ・・ になります。
補足
補足します。 今、数字の入っているA1セルとA2セルの間に、(空白行)を、その数(セルに書かれた数)と同じ行数だけ挿入したいのです。よろしくお願いします。 A列(現在) A列(予定) 3 3 5 (空白行) 2 (空白行) (空白行) 5 (空白行) (空白行) (空白行) (空白行) (空白行) 2 (空白行) (空白行)
お礼
出来ました。ありがとうございました。マクロの作成については初心者で、昨日、VBAProjectの右ページに貼り付けて実行した時はうまくいかなかたのですが、今日やり直してみると、きれいに空白行がはいっていました。ありがとうございました。
補足
補足します。 今、数字の入っているA1セルとA2セルの間に、(空白行)を、その数(セルに書かれた数)と同じ行数だけ挿入したいのです。よろしくお願いします。 A列(現在) A列(予定) 3 3 5 (空白行) 2 (空白行) (空白行) 5 (空白行) (空白行) (空白行) (空白行) (空白行) 2 (空白行) (空白行)