• ベストアンサー

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

mt2008の回答

  • ベストアンサー
  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.3

最初に切り取り開始行を検索して配列にでも入れておき、ループを回して、切り取り開始行~最終行までのコピーを各シートに貼り付けると言う処理になるかと思います。 サンプルコードを書きますので、Step実行でもして何をしているか確認して見てください。 Sub sample() Dim nMaxRow As Long Dim nLoop As Long Dim nSheet As Long Dim nCount As Long Dim nStartRow() As Long '切り取り開始行を入れる配列 Sheets("Sheet1").Select '*** A2から順に見て行き、選択開始位置を求める nMaxRow = ActiveSheet.UsedRange.End(xlDown).Row 'データのある最終行 nCount = 0 For nLoop = 2 To nMaxRow  'セルの値が検索文字と同一かつ、次のセルの値は検索文字と不一致なら切り取り開始行  If StrComp(Cells(1, 1), Cells(nLoop, 1)) = 0 And StrComp(Cells(1, 1), Cells(nLoop + 1, 1)) <> 0 Then   ReDim Preserve nStartRow(nCount) '配列を広げる   nStartRow(nCount) = nLoop '切り取り開始行を代入   nCount = nCount + 1   If nCount > 5 Then Exit For 'Sheet7までなのでこれ以上の切り取りは不要  End If Next nLoop '*** 検索文字が無かった場合 If nCount = 0 Then  MsgBox ("検索文字「" & sSearchWord & "」なし")  End End If '*** Sheet2~7にデータを張りつけ For nSheet = 0 To UBound(nStartRow())  'Sheet1の切り取り開始行から最終行までを選択してコピー  Sheets("Sheet1").Select  Range(Cells(nStartRow(nSheet), 1), Cells(nMaxRow, 8)).Select  Selection.Copy    'Sheet2~7のA2に貼り付け  Sheets("Sheet" & nSheet + 2).Select  Range("A2").Select  ActiveSheet.Paste Next nSheet End Sub

関連するQ&A

  • マクロの記録で任意の文字を検索してそのセルから範囲を選択したいのですが

    マクロの記録で任意の文字を検索して、見つかったセルから範囲を選択して別なシートへ切り取りし、貼り付けたいですが何か方法はありますか?現在は検索をしたセル番号になってしまいます。 マクロはじめたばかりです。 検索→い→(A2:C5)選択&切り取り→sheet2貼り付け→検索(sheet2)→え→(A3:C4)選択&切り取り→sheet3貼り付け sheet1    →sheet2   →sheet3  ABC     ABC    ABC 1あかさ    1いきし   1えけせ 2いきし    2うくす   2おこそ 3うくす    3えけせ 4えけせ    4おこそ 5おこそ できれば検索で発見されたA2やA3を任意のアクティブセルにし、範囲はC列の一番下のセルを選択し切り取りたいのですができますでしょうか。

  • EXCELで指定した範囲の切り取り貼り付け

    Excelで シート1のA1~E1000までデータがあります。 B列には0~1500の数値データがあり昇順で並んでいます。 このB列のデータの700~1000の数値データのA~E列全ての範囲を「切り取り」・シート2に「形式を指定して貼り付け」(値)という作業をマクロにてできませんか? 尚、1つセルが下がるごとに1数字があがるとは限りません。 大変困ってます。詳しい方ご教授ください。

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

    シートが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をビスタで使っています。 お手数をおかけいたしますが、ぜひよろしくお願いいたします。

  • 特定セルから29右までを範囲選択→切り取り→

    特定セルから29右までを範囲選択→切り取り→50個右に移動して貼り付け 毎回A列が先頭にあるのですが、どこのA列になるかは、データによってまちまちになってしまうため、自分自身でそこを選択してからマクロ実行をしようと考えてます。

  • リンク貼り付けをマクロで簡素化したい

    1)個人票ブック(太郎シート 花子シート 次郎シー・・・・・)の各シートのA1からA5まで、値や公式がはいっています。 2)このシートのA1からA5までの値等を、別の総括表ブック(一枚のシートしかない)にリンク貼り付けをします。 3)まず、太郎シートのA1~A5までは、総括表ブックのB列にリンク貼り付けするマクロボタンを、太郎シートに設置します。 4)さらに、花子シートのA1~A5までは、総括表ブックのC列にリンク貼り付けするマクロボタンを、花子シートに設置します。 5)そして、次郎シートのA1~A5までは、総括表ブックのD列にリンク貼り付けするマクロボタンを、次郎シートに設置します。 6)こうしてマクロボタンを順次貼り付けていきます。 7)各シートの貼り付け場所は列に貼り付けていきますが、上から順番ではなく、任意に飛んでいますが、  各シートの行は、みな一律で同じ行です。 列は違っても皆おなじ行にリンク貼り付けしたいです。 このような操作をマクロ記録でつくりましたが、膨大な作業が必要です。これをなんとかVBAで簡素化したいのですが・・よろしくお願いします。

  • Excelマクロに、「検索」は記録されない?

    A列とB列にそれぞれ文字が入っています。 A列に含まれる文字を全て検索 ↓ 見つかったセルを含む行を選択。(A列のセルだけでなくその横のB列のセルもとりたいのです) ↓ 切り取り ↓ 別のシートに貼り付け と言う処理を順次行うマクロを作りたいのですが、自動記録してみたところ、文字列の検索・選択の部分が全く記録されません。 この部分、どのように記述したらよろしいのでしょうか? また、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列とします。 宜しくお願い致します。

  • 範囲選択について教えてください。全くの初心者です

    全くの初心者です。 Excel2003を使用しています。   A  B  C  D  E 1 タイトル 2 番号 日付 項目 1項目 2項目 3 1  1/1  1000 2000 1500 4 2  2/1  2000 3000 4000 5 3  3/1  1000 2000 2000 6 4      4000 7000 7500 7 5 8 6 …というようにデータが入っています。 ただし、A列には999まで番号が入ってしまっています。 BからE列に入るデータの行数はシートごとに違います。 上の例で言うと、BからEのデータは3つ(3から5行目まで)しか入っていないことになります。 やりたいことは、6行目にC、D、Eの縦計(4000 7000 7500)を入れた上で、 6 Eから1Aまでを範囲選択して、印刷範囲の設定をしたいのです。 しかし、別のシートには5行分データが入るかもしれず、また別のシートには20行分のデータが入るかもしれません。 こんなとき、どうやってマクロを作ればいいのか、教えてください。 できれば自動記録という方法がいいのです。 言語はよくわからないので… 勝手なお願いですが、どなたか助けてください。 よろしくお願いします。

  • Excelのシート間のコピー&貼付け

    皆様にお聞きしたいのですが。。m(_ _)m あるシートで作成したデータ(罫線等は入れてません。セルに入力したデータのみです)を、一番上の項目名のみまず最初に別シートにコピーしました。 そして元データでフィルタで抽出した間違いがあったデータのみ、複数の行番号をドラッグで選択して別シートにコピー&貼付けをしていたら、なぜか元のシートと列の数が合わなくなりました; 列の数は40前後と多いのですが・・・ 一番上の項目名と途中か合わなくなっていました(T-T) 普通に行を選択してコピー、そして別シートへ貼付けしていただけなのですが。。 こうゆうことってあるのでしょうか??? どなたか、どうかご教授ください。宜しくお願い致します。。 補足 ちなみに、ちゃんとコピー先のシートのA2(項目行の先頭の下の行)にコピーしたのですが・・。

  • エクセルのマクロで範囲を選択するマクロ

    教えてください。 下記の通り、例えばA列の2~5にデータが入っている場合に、B2~D5の範囲を選択するマクロを教えてください。 A列のデータが入っている行は可変です。   A B C D E 1  2 6 3 7 4 9 5 10 6 7