Excelマクロで現在のセルからコピーと挿入する方法

このQ&Aのポイント
  • 現在のセルから右に5列、下に5行をコピーし、下の6行目に挿入する方法を説明します。
  • 現在のセルから下に13行まで1を挿入し、同じ列の14行から7行まで2を挿入します。その後、最後の行まで13と7を交互に挿入して、それぞれ3と4を増やして埋めていきます。
  • Excelのマクロを使って、現在のセルから指定した範囲をコピーして挿入する方法を詳しく解説します。絶対位置で記録されてしまう場合には、相対位置で記録するように設定してください。
回答を見る
  • ベストアンサー

現在のセルから

エクセルでマクロを使って、記録して、自分でいじってるんですが、汎用性を持たせるために、”現在のセルから”という条件で以下のようなマクロを組たいと思っているのですが、絶対位置で記録されてしまうため、うまくいきません。 教えて頂けると幸いです。 1、現在のセルから右に5列、下に5列をコピーして 下6列目に、コピーしたセルを挿入する 2、現在のセルから下に13行目まで1を挿入。同じ列の14行目+7行まで2を挿入。 その後も最後の行(その行以降は全て空白のセルになる行)まで13、7、13、7と13と7を行数を交互に挿入し,それぞれ3、4、5と数字を一つ増やしながら埋めていく方法。 1-13行=1 14-21=2 22-35=3 36-23=4 以下略

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

  • ベストアンサー
noname#183088
noname#183088
回答No.2

相対位置で保存する機能があるので、これで保存して書き換えてみてはどうでしょう。 http://www.officepro.jp/excelmacro/relative/index1.html 2007以降はリボンなのでやり方が違ったかもしれないですが、 マクロの保存近辺に「相対参照で記録」みたいなものはあったと思います。 ------ 手元にExcelないので試せないのと、そもそもやりたいことがよく分からず。。。 見当違いかもしれませんが、相対的に処理するときによく使う処理を紹介してみます。 現在の編集せるは「Activecell」で取れます。 編集セルから 下に5、右に3 を取りたい場合、ActiveCell.Offset(5, 3) のような書き方ができます。 現在のセルから、下に5、右に3移動した位置まで、箱形の範囲を取得する場合 Range(Activecell, Activecell.Offset(5, 3)) のような書き方が出来ます。

tukutukuhosi
質問者

お礼

ありがとうございます。相対参照で記録とActivatecellでうまくいきました!

その他の回答 (2)

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

ご利用のエクセルのバージョンが書かれていませんが、いずれにしても 手順: 1.マクロの記録を開始する 2.「相対参照で記録」ボタンを入れる 3.今現在のセルから右5列下5行のセルをコピー 4.もう一つ下の行の不明の列のセルに貼り付け   :   : 引き続き手順を記録   : 6.相対参照ボタンをクリックして外す 7.記録終了する 以上です。 任意のセルでマクロを「実行した」時点でそこから「相対的に下5右5をコピー、一つ下に貼り付け……」のように作動してくれます。

tukutukuhosi
質問者

お礼

ありがとうございます。相対参照で記録は大変便利ですね。助かりました。

  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.1

シートをR1C1形式にして「マクロの記録」した方がよいかも。 (Range("A1")でない方式)

tukutukuhosi
質問者

お礼

ありがとうございます。その設定で探ってみたいと思います。

関連するQ&A

  • 空白セルをデータと認識してしまいます

    Excel2003を使用しています。 「マクロの記録」を使って、あるリストを自動作成 しようとしているのですが、うまくいきません。 A,B2つの列に分かれたデータを連結させるため、 C列に「CONCATENATE」関数を入れて適当な行まで コピーします。(それ以上はデータが入らないだろうと思われる100行目ぐらいまで) その後C列をコピーし、「値貼付け」をして 関数を値に変えます。 そうすると、たとえば実際には20行目までデータが 入っていたとすると、21行目~100行目までは 空白になりますよね? でも、どうもその空白行もデータとみなされている ようなんです…。 Range("C2").End(xlDown).Row で下端セルを探そうとすると、100行目に なってしまいますし、「ジャンプ」で空白セルを 探しても、同じ結果になります。 空白セルを選んで一度「Delete」を押すと 正しく「空白」と認識するようなのですが…。 「実際にデータの入っているセルとそうでないセル」 を自動で判別させたいので、 簡単に「何も入っていないセルを”空白”と正しく 認識させる方法」はありませんでしょうか?

  • エクセルのマクロ(行を挿入し連番を振る)

    ボタンを押すと以下のことを実行するマクロを作成することはできますか? A列2行目から 書類a 書類b 書類c 書類d 書類e C列2行目から 5 3 2 4 3 と入っています。C列は各書類の枚数です。 ボタンを押すと書類aと書類bの間に4行空白行が挿入され、A列とC列は増やした4行にそれぞれ書類a、5がコピーされ、B列には2列目から6列目まで1.2.3.4.5と連番が振られる。 というマクロです。 B列C列で1/5 2/5 3/5 4/5 5/5 であるという表現がしたいのです。(/は入りません) 書類が1枚の場合はB列C列共に空白で1/1とは入りません。 C列に入る書類の枚数により行が挿入されその書類の枚数分の連番が振られるようなマクロが作りたいです。 毎日何百行も手作業で挿入しコピーし連番を振る作業をしています。 決まった行数を増やすとか上の行をコピーするマクロならわかるのですが、C列の値を見て挿入する行数を判断するようなマクロができるのかわかりません。 どなたか教えて頂けないでしょうか。

  • エクセルマクロでセルの値を下へコピーするには

    ご教授下さい。 毎日送られてくる項目数の多い表を、必要な項目のみ取り出して表を整理するマクロを組んで使っています。しかし、日によって行数が違う為、ある列に数式を入力して下へコピーする場合、マクロ操作が終わってからオートフィルを使って下へコピーしています。行数が違っても行数分だけ下へコピーできるマクロを教えて下さい。何卒よろしくお願い致します。      A列   B列   C列   D列     E列 1行    豆   10入   2個   100円   (数式CXD)200円 2行   飴   20入  3個   150円   (数式CXD)450円  3行   餅   10入   4個   100円  (数式CXD)400円 4行   麦   15入   2個   200円   ↓ 5行   米   20入   4個   100円   ↓ 上記のような表でE列の数式を下へコピ-するマクロです。 日によって行数に違いがある場合でも行数分だけ 下へコピー出来るマクロを教えて下さい。

  • 特定の列、セル内の数字を認識して行をコピー、挿入

    エクセルのマクロでこんなことは可能でしょうか? (1)あるセルに(数字)が入ったとき    (そのセルの列は固定) (2)自動的にそのセルの「行」全体をコピーして    その数字が5なら4行、1なら0行 (入力値より-1行) (3)ひとつ下の行に「コピーしたセルの挿入」で行の追加をする (4)最終行はコピーしない(合計の数字が入ってしまう為) 例 列 A.B.C.D.E 空白.文字列.文字列.1.文字列 空白.文字列.文字列.2.文字列 空白.文字列.文字列.3.文字列 空白.文字列.文字列.2.文字列 空白.文字列.文字列.8.文字列←合計の為コピーしない        ↓ 空白.文字列.文字列.1.文字列 空白.文字列.文字列.2.文字列 空白.文字列.文字列.2.文字列 空白.文字列.文字列.3.文字列 空白.文字列.文字列.3.文字列 空白.文字列.文字列.3.文字列 空白.文字列.文字列.2.文字列 空白.文字列.文字列.2.文字列 空白.文字列.文字列.8.文字列←合計の為、そのまま Cの列に3とある場合下に 【3行-(1行) = 2行】を追加コピー 空白.文字列.文字列.3.文字列 の部分。 できれば、コマンドボタンで処理したいと考えております。 お詳しい方、ご教授宜しくお願い致します。

  • エクセルでセルに数字を入力することにより行をコピー挿入

    仕事で送り状作成用のデーターを作っています。 行に郵便番号、住所、名前等が入力されてます。この1行をコピーしたいのですが、セルに必要する数字を入力することによりコピー挿入することはできないでしょうか? 例)    A       B       C      D 1  郵便番号  住所       名前    コピー行数 2  100-0001  東京都港区・・・ 山本太郎    5 3  101-0001  東京都江東区・・ 山田花子    8 以下複数行続きます。 D列に必要なコピー行数を入力することにより、一発でコピーできる方法をご教授くださいませ。エクセルのマクロを使えばできそうなのですが、マクロはあまりわかりませんので、できるだけ詳しくお願い致します。

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

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

  • マクロにて空白のセルを一括して消去でなく削除したい

    空白のセルを一括して、空白セルについた色も含めてマクロで全て削除したい。 現在のデータ(仕様)について 1.Sheet2に列ごとにセルに色をつけ、データもあるとします。 2.A列10行・B列6行・C;列18行というように、列によってデータの入った範囲が違います。 3.どの行も途中に空白セルはなく、詰めたデータです。 以上です マクロで一括処理したいと思いますが、このようなことができるコードを教えて頂けませんか。よろしくお願いします。

  • 複数セル選択範囲を下の変動する最終行まで伸ばしたい

    Win7とExcel2007でマクロ作成の初心者です。 Sub 選択範囲を広げる() Sheets("計算").Select Range("CU6").Select Selection.Resize(, Selection.Columns.Count + 27).Select ここで選んだセルの選択部分を、下の行に向かって選択範囲を広げたいです。 ただ、下方の行数は、常に変動するため、どうやって変動の選択範囲を広げたいか わかりません。よろしくお願いします。 表のCU6以下は、文字列と空白が交互にあります。 End Sub

  • エクセルでA列セルが空白の時その行に罫線を引くには

    エクセルでA列セルが空白の時、その行の下側のみに2重罫線を引くマクロを教えて下さい。 色々試しましたがうまくいきません。例えば下記の様な表で3行目、7行目、12行目の各下側にのみ2重罫線を引くマクロです。行数と空白行は、日々取り込んでいるデータによって変わります。知恵をお貸し下さい。(A列空白セルのC列にはSUM関数を入れております。うまく表記が出来ませんので念のため)        A列   B列   C列 1行     123    酒    100 2行     123    酒    100 3行  ========================  4行     215   ビール   200 5行     215   ビール   200 6行     215   ビール   200 7行 =========================   8行     324    ワイン  300 9行     324    ワイン  300 10行     324    ワイン  300 11行     324    ワイン  300 12行 ========================                 

  • エクセル 行数指定し一つのセルに改行込で入れる

    日本語が下手でもうしわけないです。 エクセルのマクロにて、行数指定指定したセルを別セルに 改行を含めて入れたいのです。 具体的なやりたいこととしては、 A列に不定期間隔で不定形の文字列が入力されていて、(間は空白) その文字列から文字列の行数を読み、 B列の同じ行数分のセルをひとまとまりとし、 別シートのA1に改行込みで入れる。 次のまとまりはA2に次はA3に… といった動作をさせたいです。 例. 1.A1,A6,A9に文字列があるとする。間は空白 文字列間の行数を読む (1)A1-A5 (2)A6-A8 (3)A9-最終行 2.A列で取得した行数と同じ行数をB列で指定 (1)B1-B5 (2)B6-B8 (3)B9-最終行 3.B列で指定したセルをひとまとまりとして 別シートのA1から順に改行込みで入れる (1)シート2のA1 B1(改行) B2(改行) B3(改行) B4(改行) B5(改行) (2)シート2のA2 B6(改行) B7(改行) B8(改行) (3)シート2のA3 B9(改行) ・ ・ 最終行 ####### マクロでの実現を考えているのですが、 マクロ初心者でさっぱりわかりません。 どなたか、マクロでの記述例を教えて頂けないでしょうか。 また、関数で実現できるのであれば、そちらも教えて頂きたいです。 宜しくお願いします。

専門家に質問してみよう