エクセルのマクロで行挿入する方法

このQ&Aのポイント
  • エクセルのマクロを使用して、特定の条件で行を挿入する方法について教えてください。
  • エクセルの表において、コード1、コード2、コード3、コード4のいずれかが異なる場合、次の行に空白行を挿入するマクロを作成したいです。
  • 具体的には、3行目と4行目の間、7行目と8行目の間、8行目と9行目の間に行が挿入されるようなマクロを作成したいと思っています。
回答を見る
  • ベストアンサー

エクセルのマクロについて

すみません。教えてください。 以下のようなエクセルの表があるとします。 コード1,コード2,コード3,コード4のどれか1つでも違っていれば,次の行に空白行を挿入するというマクロを作成できればと思うのですが,どのような記述になるのでしょうか。 結果的には,3行目と4行目の間,7行目と8行目の間,8行目と9行目の間に行が挿入されればよいのですが。 エクセルVBAの本を読んだりしてはみたのですが,よくわからず,お伺いいたします。 よろしくお願いいたします。 1行目  コード1  コード2  コード3  コード4 2行目  100    10     15     110 3行目  100    10     15     110 4行目  200    10     15     110 5行目  200    10     15     110 6行目  200    10     15     110 7行目  200    10     15     110 8行目  100    10     15     210 9行目  100    10     25     110

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

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.1

こんなカンジで、下から順繰り調べていきます。 sub macro1()  dim r as long  for r = range("A65536").end(xlup).row to 3 step -1   if cells(r, "A") <> cells(r - 1, "A") _   or cells(r, "B") <> cells(r - 1, "B") _   or cells(r, "C") <> cells(r - 1, "C") _   or cells(r, "D") <> cells(r - 1, "D") then    cells(r, "A").entirerow.insert shift:=xlshiftdown   end if  next r end sub

motoyosiyh
質問者

お礼

お礼が遅くなり,申し訳ありません。このとおりにさせていただいたら,うまくいきました。マクロを使えることはすばらしいことですね。今後勉強していきたいと思います。

その他の回答 (1)

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

こんにちは! 一例です。 Sub Sample1() Dim i As Long i = Cells(Rows.Count, "A").End(xlUp).Row Application.ScreenUpdating = False Range("A:A").Insert With Range(Cells(2, "A"), Cells(i, "A")) .Formula = "=B2&""_""&C2&""_""&D2&""_""&E2" .Value = .Value End With For i = Cells(Rows.Count, "A").End(xlUp).Row To 3 Step -1 If Cells(i, "A") <> Cells(i - 1, "A") Then Rows(i).Insert End If Next i Range("A:A").Delete Application.ScreenUpdating = True End Sub ※ 色々なやり方があると思いますが、A列を挿入 → A列を作業用の列として、 元のA~D列をつなげたものを下から比較し、違う場合に行挿入 といった感じでやっています。m(_ _)m

motoyosiyh
質問者

お礼

お礼が遅くなり,申し訳ありません。このとおりにさせていただいたら,うまくいきました。マクロを使えることはすばらしいことですね。また,いろいろな方法があるのですね。今後勉強していきたいと思います。

関連するQ&A

  • エクセル マクロで数値が変った時行挿入できますか

    最近VBAを勉強しはじめた初心者です。 簡単なマクロを使ってエクセルシートを作成中しているのですが、以下の部分がどうしても分りません。 (1)ある列(例えばA列)に数字が入っています。 (2)その数字は、セル1個つき1桁から3桁(1から100の場合)です。 (3)「1」「1」「1」と3セル並んでいたり、「2」「2」が2セルだったりと色々です。 (4)この数字が変化したとき、例えば「1」と「2」の間、「2」と「3」の間などに、  自動的に行挿入して、空白行を作りたいと思っています。 マクロでこのような事が可能でしょうか? もし、お分かりになる方がおられましたら、ご教示の程お願いいたします。 どうぞよろしくお願いいたします。

  • 「新しいマクロの記録」機能を使っての行挿入

    「新しいマクロの記録」機能を使って1行と2行の間に10行の空白行を挿入後、A13のセルを選択というマクロを作りました(マクロ1とします)。このマクロを実行すると1行と2行の間に10行の空白行が挿入された後、A13が選択されます。ここでもう一度、マクロ1を実行すると1行と12行の間にさらに空白行が10行挿入されA13が選択されます。このようになるのは当たり前と言えば当たり前なのですが、2回目にマクロを実行したときに12行と13行の間に10行の空白行が挿入された後、A24が選択されるようにするには、どのようにマクロを記録すればよいのでしょうか?  ようは、10行の空白行を挿入した後、セルを11行下に移動させるというマクロを作りたいのです。VBAの記述方法はほとんど分からないので「新しいマクロの記録」機能を使うことを前提にご教授ください。

  • エクセル・マクロについて教えてください

    こんにちは。エクセルのマクロについて教えてください。 エクセルの表で毎日20000~30000行くらいのデータがあり、フィルタを掛けてやるのもいいですが、業務効率を考えて、マクロを使用したいと思っています。 実行したい内容は、C列(担当)は8と721以外は削除、F列(地域)は渋谷と品川以外は削除、G列(コード)は1000未満と空白行は削除、H列(数量)は0以下を削除 簡易記録マクロで記録してみましたが、毎回データの内容が異なるため、H列のマイナスが削除されていなかったり等、実行したい結果が得ることができませんでした。 マクロも少し勉強していますが本やネットでも検索したりしましたが、うまくできませんでした。ご教授ください。

  • エクセルマクロでデータの検索と転記方法

    エクセル2000です。 sheetAの 10行~165行に表Aがあります。 途中に、空白行や小計行もかなりあります。 C列のコード(文字列、数値両方あります)をキーにして、SheetBの4行目から91行目までの表B(A列にコードがあります)のB列の数値を、sheetAの10行~170行のD列に転記したいのです。sheetAの表の小計行のC列は空白です。SheetBの表Bのコードは、sheetAの表Aのコードの一部しかありません。ですから、sheetAの表AのコードがSheetBの表Bになかったらそこは何も転記しません。 わかりづらい説明かと思いますが、マクロの記述をお教えいただければ幸いです。

  • エクセルマクロ、集計行の上に空白行挿入

    エクセルデータがA、B、C、D、E列1000行まであります。 C列基準でE列を合計するマクロを作成しましたが(集計行はデータの下に挿入)、実行の結果、新たに挿入される集計行の上に空白行を1行挿入していくということを、作成したマクロに付加できるでしょうか? ご教授頂きたく、お願いします。

  •  EXCELのVBA,マクロでこれはどう記述するのでしょう?

    先日、類似の質問をしたものですが、下記のような表を作成し、A列の型データーを検索して、参照表からVLOOKUP関数で指定列の品番を表示させています。  先日、質問内容が抽象的で分かりにくかったので再度、質問ですが、  関数では出来ないことが前回の質問で分かり、VBAでないとダメだと言うことなんですが、 私のしたいことは、簡単に言いますと、B列の台数セルについて、セルの値を検索して台数が200以上であつた場合、そのセルのある下段に空白行を200なら1行、300なら2行挿入するという風にしたいのです。  これをVBAで実現するにはどのような記述が必要なのでしょうか?簡単に出来るのでしょうか?私はVBAは素人な者で、コード等は良く知りません。  いつもやっているのは、記録マクロばかりで、定形作業で一度組んだマクロの変化する部分(日付、ファイル名)を編集、修正しかしておりません。だからいつもデバック画面と格闘しています。どなたか知っておられたらご指南、お願いします。    A     B      C     D 1  型   台数  品番 2 検索値 250 3 検索値 100 4 検索値 200 5 検索値 150 6 検索値 350

  • excelのマクロで条件による行の挿入

    列AとBがあり列Aに学校のクラス名A組、B組、C組・・・(20クラスほど)と氏名が 入るエクセルシートがあるのですが 先頭行はA組から始まり5行区切りで数え、(A組も5行のうちに入る) その5行内に次のB組が入らないように空白行を挿入したいです もし、5行以内にB組がない場合、次の5行でまたB組があるか判定しなければ氏名5つ あれば空白をいれてというのを20クラスぶん作るマクロは可能でしょうか? VBAの知識がさっぱりないので途方にくれています。 元のデータの例   マクロ実行後 列A   列B      列A   列B A組           A組   氏名1 111      氏名1 111  氏名2 222      氏名2 222 B組           空白行挿入 氏名3 333      空白行挿入 氏名4 444      B組 氏名5 555      氏名3 333 氏名6 666      氏名4 444 氏名7 777      氏名5 555 C組 氏名6 666              氏名7 777              空白行挿入              空白行挿入              空白行挿入              空白行挿入              C組  

  • Excelのマクロで困ってます

    エクセルのマクロを使用しているのですが、CSVで作成済のエクセルのファイルを1行づつセルに展開するマクロを記述したいのですが、どうすれば良いのか困ってます。  教えてください。

  • ワードからエクセルマクロの起動

    ワードに「挿入」-「オブジェクト」-新規作成タブの「エクセルワークシート」を選択してワークシート(表)を挿入しました。 そして、このエクセルの表に色をつける等の処理をしたいのですが、 この時エクセルを開かないであくまでもワード上でやりたいのです。 でもワードマクロからこのエクセル表を制御するには限りがあり、 エクセルマクロを起動できたらいいと思うのですが、その方法がわかりません。 どのように記述すればいいのでしょうか? わかりにくい質問かもしれませんがどなたかよろしくお願いします。 ワード、エクセルともに98です。

  • エクセルのマクロでこういう場合は?

    エクセル97です。 Sheet1の E3:J29 に表があります。 E列、F列は文字列、G列は数値、H~J列には式が入っています。 この表の G列の値が空白や0でない行だけをコピーして、Sheet2 のB2 以下に切れ目なく表の「値」を貼り付けるにはどうのようなマクロを書けばいいのでしょうか?(G列が空白や0の行はSheet2の表では一切無視され、空白行ができないようにしたいのです。) よろしくお願いします。

専門家に質問してみよう