• ベストアンサー

最終データまで下方に繰り返すマクロ

office xp excel シート1A1:H100 の表があるとします。 A3からデータが入っています。 A3:H8を選択し、シート2のA3:H8にコピペします。 次にシート1に戻ってA9:H14を選択して、シート2の同じA3:H8に上書きコピペします。 これをA100まで繰り返しますが、途中でデータがなくなればそこで終了します。 この6行8列をひとつの選択単位として下方にずれていくにはどういうマクロを組めばいいですか?

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

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

sub macro1()  dim i as long  worksheets("Sheet1").select  for i = 3 to 100 step 6   if cells(i, "A") = "" then   exit sub   end if   cells(i, "A").resize(6, 8).copy destination:=worksheets("Sheet2").range("A3:H8")  next i end sub #1) 簡単な算数ですが,3行目から6行ステップで進行していくのでは,A100までになりません。 #2) 「途中でデータが無くなる」とは,具体的にどういうシチュエーションなのか不明瞭です。 #3) 終了の条件が来るまでイチイチコピーを繰り返し,一回前の実施結果を潰していくのはいかにも無駄な作業ですね。 そういった部分をきちんと手当てして,サンプルのマクロを応用して自作してください。 sub macro2()  dim i as long  for i = 3 to 99 step 6   if worksheets("Sheet1").cells(i, "A") = "" then    worksheets("Sheet1").cells(i - 6, "A").resize(6, 8).copy _     destination:=worksheets("Sheet2").range("A3:H8")    exit sub   end if  next i end sub

noname#150307
質問者

お礼

ありがとうございます。 すこし進みました。 質問の表現方法というのはむずかしいものですね。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

回答No.1

  シート2のA3:H8は最後にコピーした内容になってしまうのですが、A3からA100までを繰り返す意味が理解できない。    

noname#150307
質問者

お礼

回答ありがとうございます。 >シート2のA3:H8は最後にコピーした内容になってしまうのですが、 かまいません。 >A3からA100までを繰り返す意味が理解できない。 6行8列をひとつの枠として他で編集しています。 この作業が終了したらまた次の下方の6行8列を選択して編集したいわけです。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 【再】エクセル2013 マクロをご教示ください

    Sheet1で選択しているセルの行をSheet2に転写したいです。 Sheet1とSheet2の4行目に見出し。 Shet1にはA~U列までデータがあります。(途中空白セルの場合もあり) Sheet1の5行目以降の、あるセルを選択してマクロを実行すると Sheet1のC~S列までをSheet2のA~Q列へコピペしたいです。 Sheet1は H列に必ずデータがあるので それらを最終行の判断基準とします。 Sheet1での選択セルは複数の場合もあります。 ただし、同じ行のセルを複数選択しても Sheet2への貼り付けは1行とします。 マクロを実行する度に、Sheet1での選択セルの該当行が Sheet2へ追加されるようにしたいです。 (Sheet2へコピペされたデータは残します) また、Sheet2への貼り付け内容が同じだった場合は 注意喚起のため メッセージで 「重複データが存在します」を表示したいです。 重複の判断基準はSheet2の B、D、F列とします。 宜しくお願い致します。

  • エクセルのマクロを知りたい

    エクセルで,たくさんのデータが入力された【シートa】があります。 新しく【シートb】を作成して,そこに空白の表(1)~(10)までを作成します。 (ちなみに表(1)は1行から始まり100行まで,表(2)は101行から始まり200行まで・・・・といった感じです) 【シートb】の表(1)には,【シートa】でA列に「1」が入力されているデータを抽出して,それをB列の昇順に並べて記入しなさい。同様に,表(2)には,【シートa】でA列に「2」が入力されているデータを抽出して,それをB列の昇順に並べて記入しなさい。・・・というのを表(10)まで続けます。 上記のような命令をボタン一つで操作できるようなマクロを教えて欲しいのです。 お願いします。

  • マクロの記録で作成したマクロがデータが代わると誤動作する。

    マクロの記録で作成したマクロがデータが代わると誤動作する。 エクセルファイルにてA列からJ列までデータがあります。 行数は2,000行です。データは全て半角です。 A列の値が 1=入庫 2=出庫 3=戻入 と全て置換 B列の値が 1=社内品 2=社外品 3=受入 と全て置換。 でこのB列が3で受入に置換えたら その隣のA列の値を 受入に置き換えたい。 さらに A列の値が置換え後の入庫と戻入場合はその行のJ列の値を切り取り、K列に貼付をし A列の値が置換え後の出庫の場合はその行のJ列の値を切り取り、L列に貼付をしたいです。 マクロの記録で行いましたが、 いったんデータを全て消して別データを貼り付けしたらA列B列の置換えは正常ですが B列が3の場合にA列を再置換えと、J列の値を切り取り、K列、L列への貼付が 誤動作します。 (別データは雛形は同じです。入力規則も同じですがデータは変わります。  例:セルA1のデータは1、 新しいデータはセルA1は2 等) マクロの記録中では、並べ替えでソートし上記条件でセルを選択しコピペをしました。 並べ替えは2回です。 マクロ文を見ると、セル名がずらずら並んで、セル番号が指定されてます。 (マクロ記録中に選択したセル番号が全部記録されてます。) 文を見ると、上記条件で置換えやコピペでなく このセルはこう置換え、このセルはこうコピペのように読めます。 これでは、データが代わったら、別の動きになるのかな?と思いました。 こういう場合はマクロではどうやって記録すればいいでしょうか?

  • Excelマクロで質問です。

    Excelマクロで質問です。 Sheet1にデータが入力されていて(ここでは100行入力されているとします)、 Sheet2のA2からE2に数式が入力されています。 ↓ この数式をSheet1のA列に入力されているデータ行数分プラス1(ここでは100+1) Sheet2のA3以降(A3からA103)にコピペするマクロを教えていただけないでしょうか。 100は、毎回変化します。

  • マクロについての質問です

    前回、このサイトにて教えてもらったマクロにて、不明な点が出てきましたので再度質問させていただきます。 ∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞                           ボタン  A  B  C  D  E  F  G    H                  data1                      data2                    data3                      data4                    data5                    data6                      ・                        ・                        ・     ※Gの列にはハイパーリンクが並んでいます。 ※ボタン押下時に選択しているセルの行番号を取得し、その行のA~F列をコピーして、ハイパーリンクで開いた ファイル(date・・・)にはりつける。 ∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞ この作業のマクロを教えていただき、以下のマクロが出来ました。 Sub book() Dim col As Integer '選択行No取得用変数 Windows("book.xls").Activate col = ActiveCell.Row '現在選択している行No格納 Range(Cells(col, 1), Cells(col, 6)).Select '該当行のA~F列選択 Selection.Copy '選択範囲コピー Cells(col, 7).Hyperlinks(1).Follow NewWindow:=True '該当行のリンク開く Sheets("Sheet2").Select '貼り付けシートの選択 Range("a2").Select '貼り付けセルの選択 ActiveSheet.Paste '貼り付け End Sub このマクロで、もともと作成していた6行程度の表では何の不自由も無く作業できました。 次にこの表の行が大量に増えてきましたので \\server\スタッフ\購買 フォルダーに、連続した番号のファイル (date1・date2・・・・date10)を作成し、上記の表の3行目(data1の行)のG列に、ハイパーリンク関数  =HYPERLINK("\\server\スタッフ\購買\"&H3&".xls",H3)を入力。 その後、3行目H列にdate1を入力し、フィルコピーにてdate1・date2・・・・date10までを作成。 次に3行目G列からフィルコピーにてハイパーリンクdate1・date2・・・・date10までを作成。 これで、単純に上記表を拡大することが出来たと思っていたのですが、今まで使っていたマクロボタンを押すと “実行時エラー9:インデックスが有効範囲にありません”となってしまい、デバックすると Cells(col, 7).Hyperlinks(1).Follow NewWindow:=True の行が黄色に点灯していました。 これはどういう内容でしょうか?どの作業が悪いのでしょうか?私としては、この表のからリンクするファイルを 増やし、そのファイル名をフィルコピーにて表に陳列させたいと考えていました。 もし何か良い作業があれば教えていただきたいです。すみませんがよろしくお願いします。

  • 【エクセルマクロ】シート間のデータ切取⇒貼付マクロをくみたいです。

    シートが2つあって、それぞれ「商品・顧客マスタ3」、「取引終了データ」というシート名です。 「商品・顧客マスタ3」のシートの列A~Kまでをドラッグしている状態で「CTRL+SHIFT+U」 をおすと、切り取り処理されて、「取引終了データ」シートの同じA~Kまでに「すべて貼り付け」されるマクロをつくりたいのですが、スキル不足からできません。ぜひ教えていただけないでしょうか? 【備考】 ・「商品・顧客マスタ3」シートのドラッグしている行は様々で1行限りのときもあれば、5行(超え)等になるときもあります。列はつねにA~Kまでです。例 5行のとき⇒A401~K405までをドラッグしている状態。常に連続しています。 ・「取引終了データ」の貼り付け位置はA~K列の文字が入っていないところの一番最初の位置にしたい  です。現在では、A1~K402までデータがぎっちり入っていて、A403を先頭に切り取ったデータを貼り付けしたいです。(データのはいっていないA列の一番上にはりつけできれば十分です。) ・貼り付け後は、「商品・顧客マスタ3」の空欄になったところを「削除」して上方向につめたいです。削除は行  全体ではなく、列A~Kまでとしたいです。 なお、EXCEL2002をビスタで使っています。 お手数をおかけいたしますが、ぜひよろしくお願いいたします。

  • マクロ 選択範囲及び切り取り&貼り付けについて教えてください。

    (1)sheet1のA列からH列までデータが入っています。 (2)検索機能を使って発見されたセル(検索されるデータはA列にのみ入っています。)からA~H列のデータが入っている最終行まで選択し切り取り。(場合によっては検索を2回してから選択範囲を決めます) (3)sheet2のA2へ貼り付け (1)~(3)の作業をsheet7まで繰り返します。 マクロの記録を行うと選択範囲が指定され別のデータの時にも前と同じ範囲しか指定できません。 例 sheet1検索ち→発見されたセル(この場合A3)からA~H列の最終行(A9)選択及び切り取り→sheet2のA2へ貼り付け→検索ち→文字が縦に2回続いている場合は次を検索→発見されたセル(この場合A6)からA~H列の最終行(H8)選択及び切り取り→sheet3のA2へ貼り付け sheet1   →     sheet2   →   sheet3  ABCDEHGH    ABCDEHGH  ABCDEHGH 1ち あいうえおか  1          1 2ひあいう えおか 2ちあい い うえ 2ちあいうえお か 3ちあい い うえ  3 あいうえお か 3ひあいうえおかき 4ゆあいうえお か 4ちあいうおかき  4ちあ うえおき  5ちあいうおかき  5ゆあいうえおかき  6 あいうえおかき 6ちあいうえお か  7ちあいうえお か 7ひあいうえおかき 8ひあいうえおかき 8ちあ うえおき  9ちあ うえおき   *実際のデータは2000行ぐらいデータが入っています。 *見えずらくてすみません。

  • エクセル 複数シートのデータを1シートにまとめるマクロ

    エクセルの複数シートにデータがあります。同じ条件の人のデータだけをひとつのシートにまとめたいのですが、マクロを教えていただけますでしょうか。それとも、マクロ以外に良い方法がありますか? エクセル初心者なので、あたりまえのことも知らないかもしれません。。。  【データ】 ●シート1からシート20まで、同じ配列でデータがあります。 ●1行目は見出しです。2行目から1人づつのデータです。(多くても65行までと思っています。) ●A列に到達度、B列に出欠をいれました。 ●C列からM列が氏名、課題、その他のデータです。 ●リストはシート21にあります。  【こんな作業でしょうか?】 ●シート1から20で A列が「C」または「D」ならば その行のA列からM列をコピーして シート21のA列からM列に形式を値にして張り付ける ●シート1から20で B列が「欠」ならば その行のA列からM列をコピーしてシート21のA列からM列に形式を値にして張り付ける (っというのが私の乏しい知識で考えた方法なのですが、これでは不具合がでますか? もちろん、この方法じゃなくもっといいのがあれば、それをやってみたいです。)

  • データの最終行まで計算式をコピーするマクロ

    エクセル2013を使用しています。 A列2行からとB列2行から各々 データ行が数百行あり、 C列2行に計算式を入力。 セルの右下フィルハンドルをダブルクリックすると、 例 C2:C600 の固定範囲で計算式がコピーできますが、 毎回このデータ行数が変わります。 計算式はあと4つありますので全部で5回繰り返しとなります。 マクロで最終行を検索してデータの最終行を見つけてコピーするように したいのです。 表のイメージ     A    B    C    D    E   F   G   H     I   J   K   L   M 1  data  datb 計算式1             計算式 計算式 計算式          計算式 2    ↓        ↓ 3 | 600 data datb 計算式

  • エクセル:マクロの起動条件

    お世話になります。 以下の条件でのマクロを起動する方法、及びそのマクロを教えてください。 《条件》 ブックを開いた時、あるシートのC列でデータが入っている最下行の行番号とA列のデータが入って最下行の行番号の差が100以下だった場合、マクロを実行する。 (なおC列の行番号の方が必ず大きいです) ちなみに実行したいマクロは1~6の手順です。 1.ブックを開いたとき 2.「入力用」という名前のシートのC列でデータが入っている最下行の行番号とA列のデータが入っている最下行の行番号の差が100以下だった場合 3.「入力用」というシートにかかっているシートの保護をはずし 4.データが入っているC列の最下行のA~Z列を選択して、50行分 下にコピーする。  (例えば、C列の最下行が350行の場合、A350~Z350まで を選択したあと400行まで下にコピーする。) 5.再度シートの保護をかけ 6.A列でデータが入っている最下行の1つ下のセルを選択する ちなみに、2の条件に当てはまらないときはマクロを実行しません。 またC列の最下行よりA列の最下行が大きい数字になることはないはずですが、もし同じかA列の方が大きい場合、「エラー:C列よりA列が大きくなっています」と画面に表示させたい。 なお、行番号の差:100、選択するA~Z行、50行分下にコピー は変わる可能性があるので、修正する場合どの部分を修正すればよいかも教えてください。 よろしくお願いします。

専門家に質問してみよう