Excel VBAで任意の行のセルを削除して下に詰めるマクロを作成する方法
- Excel VBAを使用して、任意の行のセルを削除し、下に詰めるマクロを作成する方法を紹介します。
- このマクロを使用すると、任意の行のセルを選択した状態で実行することで、その行のB列からR列までのセルが削除され、下に詰められます。
- この方法を使用することで、番号が割り振られているA列のセルを消すことなく、データが上から下に詰められます。
- ベストアンサー
削除して空白になった行を下から詰めたい
A行には項目の名前があり、A列には番号が上から1,2,3・・と振られています。 そして、B2からR999までにはそれぞれデータが入っています。 このとき、任意のR列のセルを選択したまま、マクロを実行すれば、 任意の行のB列からR行が削除されて、下から上に詰めるように(空白にならないように) するマクロを作りたいです。(A行に割り振っている番号を消してしまうと 連番が崩れるので、B列からR列までを詰めていくような感じです) 例: 今、R11のセルを選択しています。希望のマクロを実行すると、C11~R11が削除されて C12以降のデータが丁度上に移行するような感じです。 どのようなコードを作れば良いのか、お力をかしていただければ幸いです(/_;)
- tikoringoo
- お礼率86% (13/15)
- オフィス系ソフト
- 回答数3
- ありがとう数3
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
> 罫線や背景色もすべて消えてしまいました。文字だけを消す方法はあるでしょうか。。 「削除」ってそういうものなんですけどね。 これはどうかな Sub test() Dim nRow nRow = Selection.Row If nRow < 999 Then Range("B" & nRow & ":R998") = Range("B" & nRow + 1 & ":R999").Value End If Range("B999:R999").ClearContents End Sub
その他の回答 (2)
- keithin
- ベストアンサー率66% (5278/7940)
複数のセルを同時に選択していても作動します。 sub macro1 application.intersect(range("B:R"), selection.entirerow).delete shift:=xlshiftup end sub
お礼
ありがとうございます! びっくりしました(・・;)こんな短い間で色々と要望以上のことができてしまって・・ でも本当に本当に申し訳ないです; nao-yさんと同じようにやはり罫線や背景色が消えてしまって戸惑っています; 私の説明不足です。本来なら新たに質問をやり直すべきなのですが皆さんの貴重な ご回答をいただいたので、もしわかるようであればおしえていただければ幸いです;
- nao-y
- ベストアンサー率58% (111/190)
このコードでいけると思います。 お試しください。 Sub example() Dim myRow As String myRow = Selection.Row Range("B" & myRow & ":R" & myRow).Delete shift:=xlUp End Sub
お礼
ありがとうございます!しかし、このマクロを実行すると、セルそのものが消えてしまい、 罫線や背景色もすべて消えてしまいました。文字だけを消す方法はあるでしょうか。。 あとB1~R999のセル以外はロックをして選択できないようになっています。ロックを解除 すると上記マクロは実行できるのですがロックをするとエラーが出てしまいました(;_;) そこまで質問の中に書いていなかったので説明分不足でした。大変失礼しました。 もしわかるようであれば教えていただければすごく助かります;
関連するQ&A
- 空白行削除
宜しくお願いします。 1枚のファイルシートに14ブロックのデータが貼り付けてあります。各ブロック行の長さは違く、ランダムに貼り付けてあります。例えば、データ 何百行の空白 データ…と繰り返されており、約3万5千行ぐらいあります。 空白行削除で多分半分近くまで上に詰められれば良いのですが、たくさんあるのでマクロで教えていただければと思います。ネットでころがってるデータ試してみたのですが(1部) ENDLESSに実行されて、出来てるのかどうかも確認はとれてません。ちなみに自分のシートに貼ってあるデータはA列からAS列まであり数字、文字混在です。また各ブロックの終わりは集計行となっており、空白セルがまじってます。宜しくお願いします。
- ベストアンサー
- Excel(エクセル)
- マクロによる条件での行の入力と削除
初めまして、よろしくお願いします。 次のような二枚のシートがあります シート1 A B C 1 2 ・ 99 100 23 101 25 102 31 103 34 104 43 105 44 106 49 107 50 108 55 109 60 110 111 ・ ・ シート2 A B C 1 2 ・ 99 100 23 1 2 3 101 25 4 5 6 102 31 7 8 9 103 34 0 1 2 104 43 3 4 5 105 44 6 7 8 106 49 9 0 1 107 50 2 3 4 108 55 5 6 7 109 60 8 9 0 110 111 ・ ・ シート1とシート2のA列に入っている数字が通し番号です。シート2では加えてその通し番号のデーター数字がB列、C列、D列に入っています。 のこシート1の通し番号31が削除、代わりに通し番5番と51番を追加し、 シート1 A B C 1 2 ・ 99 100 5 101 23 102 25 103 34 104 43 105 44 106 49 107 50 108 51 109 55 110 60 111 112 ・ ・ マクロを実行すると シート2 A B C 1 2 ・ 99 100 5 101 23 1 2 3 102 25 4 5 6 103 34 0 1 2 104 43 3 4 5 105 44 6 7 8 106 49 9 0 1 107 50 2 3 4 108 51 109 55 5 6 7 110 60 8 9 0 111 112 ・ ・ シート2がこように通し番号31が入っていた行番102行が削除され、新たに通し番5番が行番100に、51番が行番108に挿入追加されるマクロを教えていただきたく、よろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- エクセルマクロでのセルの削除、挿入
A1:G20の表があります、A1:G17にデータが入っています、20行目は合計欄です。 ここでデータ面の任意のセルをアクティブにしアクティプセルとその右のセル2個をマクロで削除し上に詰めます。(B5がアクティブだとB5、C5、D5が削除) 当然合計欄の当該列のセルが上に移動します。その為18行でセル挿入を行い20行目に合計が表示されるマクロの記載を教えてください。よろしくお願いいたします。
- ベストアンサー
- Visual Basic
- マクロにて空白のセルを一括して消去でなく削除したい
空白のセルを一括して、空白セルについた色も含めてマクロで全て削除したい。 現在のデータ(仕様)について 1.Sheet2に列ごとにセルに色をつけ、データもあるとします。 2.A列10行・B列6行・C;列18行というように、列によってデータの入った範囲が違います。 3.どの行も途中に空白セルはなく、詰めたデータです。 以上です マクロで一括処理したいと思いますが、このようなことができるコードを教えて頂けませんか。よろしくお願いします。
- ベストアンサー
- Visual Basic
- Excel 空白行を上に詰めるマクロ
関数を使用して、sheet1からsheet2に必要なデータを抜き取りました。 sheet2のセルには関数が入っています。 sheet2の抽出データには1行単位(まれに2~3行続けて)空白が発生します。 この行を削除し、かつ上に詰めて表示をしたいのですが、下記の条件で実行可能でしょうか? (例) sheet1 ⇒ sheet2 A B C A B C 1 あ い う 1 あ い か 2 か 2 (空白行) 3 き く け 3 き く し 4 こ さ し 4 (空白行) ●2行目、4行目を削除し、且つ5行目以降に入力されている関数は削除したくない ●空白行削除のマクロは自動?(sheet1のデータを変更したら)で実行できるようにしたい よろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- 行削除のマクロ
B列~F列にデータが入っていてB列の最終行の下セルを選択しクリップボードのデータを貼り付けた後、貼り付けたデータの最初の3行を削除するマクロを作っています。 Sub Macro1() ''Worksheets("Sheet1").Activate ' addrw = Range("b65536").End(xlUp).Offset(1).Row Cells(addrw, 2).PasteSpecial end sub これでB列の最終行の下にデータを貼り付けることまで出来たのですが貼り付けた最初の3行の削除の仕方がわかりません。 いい方法があれば教えていただけないでしょうか。 例えばB列の10行目まで既に入力されていた場合、11行目からクリップボードのデータを貼り付け(ここまでは上のプログラムで出来ました。)、11行目から13行目を削除したいのですがどうしたらいいでしょうか?
- ベストアンサー
- オフィス系ソフト
- 空白セルとして認識しない
win2000, excel2000です。 例えば、C1に=IF(A1="","",B1)という式が入っています。 この式がC1000まで入っています。 C1~C1000には空白行が散在します。 C列のセルが空白の行をマクロでなく削除したいので C1~C1000を選択肢、「コピー→形式を選択→値」で C1~C1000にコピーします。 C1~C1000を選択し、 「ジャンプ→セルの選択→空白セル」 を実行しても「見当たりません」と返されます。 オートフィルターで空白以外のセルを実行すると、 空白と認識されるようですが、 ジャンプではだめなのでしょうか? オートフィルターで印刷には支障がないのですが、 このbookをメールで送ったりするので、 できれば空白行をマクロでなく削除した後で 送りたいのですが。
- ベストアンサー
- オフィス系ソフト
- エクセルマクロ、集計行の上に空白行挿入
エクセルデータがA、B、C、D、E列1000行まであります。 C列基準でE列を合計するマクロを作成しましたが(集計行はデータの下に挿入)、実行の結果、新たに挿入される集計行の上に空白行を1行挿入していくということを、作成したマクロに付加できるでしょうか? ご教授頂きたく、お願いします。
- ベストアンサー
- オフィス系ソフト
- エクセル2002で、ある列が空白なら、その空白のある行は削除する方法
エクセル2002で、 ある列に空白のセルがあった場合、その行を削除する方法を教えてください。 例えば、B列を選択して、 編集、ジャンプ、セル選択、空白セル、OKとたどって、 セルB11、セルB22、セルB33が空白セルなら、 11,22,33の行を削除する方法を教えてください。
- ベストアンサー
- オフィス系ソフト
お礼
ありがとうございます! ばっちり動きました。早くお答えいただき本当に助かりました!