- 締切済み
Excelマクロ 別シートへ連続コピペの方法
Excelマクロ初心者です。 現在以下のような作業をマクロを組もうとしています。 シート1のA3:A9の数値をコピー→シート1の右隣のシート(仮にシート2とします)のC3:C9へペースト→シート1へ戻りB3:B9の数値をコピー→隣の隣のシート(仮シート2の右隣のシート)のC3:C9へペースト というのをシート1のAA3:AA9まで繰り返したいです。 こういうマクロを組むのは可能なのでしょうか? もし組めるとしたらどのように組めばいいか教えて頂きたいです。 よろしくお願いします。
- ace7shunsuke
- お礼率83% (10/12)
- オフィス系ソフト
- 回答数5
- ありがとう数5
- みんなの回答 (5)
- 専門家の回答
みんなの回答
- K Kazz(@JazzCorp)
- ベストアンサー率31% (549/1751)
'再挑戦!! Sub CopyCyclicPartialRange() Const xRange_Row = 3 Const xRange_Row2 = 9 Const xRange_Rows = xRange_Row2 - xRange_Row + 1 Const xColumn_From = 1 Const xColumn_To = 27 Const xBase = "C3" Const xSheet = "シート1" Dim jj As Long Dim kk As Long Dim mm As Long Dim nn As Long Application.ScreenUpdating = False For kk = 1 To ThisWorkbook.Sheets.Count If Worksheets(kk).Name = xSheet Then mm = kk Exit For End If Next kk If (mm <> kk) Then MsgBox ("""" & xSheet & """? ご指定のシートが見つかりませんでした、残念~ん!" & vbCrLf & "再度挑戦する場合は、「xSheet」に元ネタのシート名を設定してね!") GoTo Epilogue End If kk = ThisWorkbook.Sheets.Count - (mm + xColumn_To) If (kk < 0) Then MsgBox ("このミッションを成功させるためには、シートがあと" & -kk & "個必要のようです、残念~ん!" & vbCrLf & "再度挑戦する場合は、シートを追加してね!") GoTo Epilogue End If With Worksheets(xSheet) For kk = 1 To xColumn_To .Range(.Cells(xRange_Row, kk), .Cells(xRange_Row2, kk)).Copy Worksheets(mm + kk).Range(xBase).Resize(xRange_Rows, 1).PasteSpecial Paste:=xlValues Next kk End With Epilogue: Application.ScreenUpdating = True End Sub
- 米沢 栄蔵(@YON56)
- ベストアンサー率36% (37/102)
経験上、コピー&ペーストは時間がかかるので、 数値をコピーをデータの移動と考えてマクロを記述します。 Dim A,B,X,Y,AAA() X=27 'A列からAA列までの列数 Y=7 '3行から9行までの行数 ReDim AAA(X,Y) '移動対象データの取得 Sheets("シート1").Select For A=1 To X For B=3 To Y+2 AAA(X,Y)=Cells(A,B).Value Next B Next A '取得データの移動対象への書込 Sheets("シート2").Select For A=1 To X For B=3 To Y+2 Cells(A,B)=AAA(X,Y) Next B Next A
お礼
非常にわかりやすいです。 ありがとうございます
- keithin
- ベストアンサー率66% (5278/7940)
こんばんは。 >コピー→シート1の右隣のシート(仮にシート2とします)のC3:C9へペースト いわずもがなですが元のシートのA3:AA9の内容は、生数字などですね。 数式とかで、「ただコピーしただけじゃ勝手に計算結果が変わっちゃいました」みたいなのじゃありませんね?ということです。 ご質問に書かれてることだけなら特に難しい事もなく、淡々とコピー貼り付けてくだけの単純なマクロで出来ます。 sub macro1() dim o, i o = activesheet.index on error goto errhandle for i = 1 to 27 worksheets(o).range("A3:A9").offset(0, i - 1).copy worksheets(o + i).range("C3") next i exit sub errhandle: worksheets.add after:=worksheets(worksheets.count) resume end sub
お礼
すごく単純ですね! わからないことだらけなので、今後勉強して行こうと思います。 ありがとうございました。
- tom04
- ベストアンサー率49% (2537/5117)
こんばんは! 一例です。 Alt+F11キー → メニューの挿入 → 標準モジュールに↓のコードをコピー&ペーストして マクロを実行してみてください。 尚、Sheet数はsheet1を含めて全部で28Sheetあるという前提です。 Sub test1() 'この行から Dim k As Long, ws As Worksheet Set ws = Worksheets("Sheet1") '←「Sheet1」は実際のSheet名に! For k = 2 To Worksheets.Count Range(ws.Cells(3, k - 1), ws.Cells(9, k - 1)).Copy Destination:=Worksheets(k).Range("C3") Next k End Sub 'この行まで こんな感じではどうでしょうか? ※ Sheetを追加してコピー&ペーストする場合は当然コードも変わってきます。m(_ _)m
お礼
短くシンプルでわかりやすいです。 ありがとうございます。 *の点は大丈夫です。
- K Kazz(@JazzCorp)
- ベストアンサー率31% (549/1751)
Sub CopyCyclicPartRange() Const xRange_Row = 3 Const xRange_Row2 = 9 Const xRange_Rows = xRange_Row2 - xRange_Row + 1 Const xColumn_From = 1 Const xColumn_To = 27 Const xBase = "C3" Const xSheet = "シート1" Dim jj As Long Dim kk As Long Dim mm As Long Dim nn As Long Application.ScreenUpdating = False For kk = 1 To ThisWorkbook.Sheets.Count If Worksheets(kk).Name = xSheet Then mm = kk Exit For End If Next kk With Worksheets(xSheet) For kk = 1 To xColumn_To .Range(.Cells(3, kk), .Cells(9, kk)).Copy Worksheets(mm + kk).Range(xBase).Resize(xRange_Rows, 1).PasteSpecial Paste:=xlValues Next kk End With Epilogue: Application.ScreenUpdating = True End Sub
お礼
ありがとうございます。 しかし「実行時エラー'9'、インデックスが有効範囲にありません」と出て来てしまいます。 どこがおかしいのでしょうか?
関連するQ&A
- エクセルのブック間のコピペのマクロ構文を教えて下さい
はじめまして。 マクロは初心者なので、ご教授いただけるとありがたいです。 エクセルのワークブック1のシート1をコピーして、ワークブックAのシートaにペーストをする構文をお願いします。 マクロの記録で作って実行してみましたが、コピーするファイルが開いているときはうまくいって、開いていないとないとうまくいきませんでした。 コピーするファイルが開いていない状態でもコピーできる方法はないのでしょうか… よろしくお願いいたします。
- 締切済み
- オフィス系ソフト
- エクセルの別シートで検出したデータの隣の数値を読み込みたい
初心者なため意図が上手く伝わらない文章で申し訳ございません。 エクセルでシート1に A B C 1 銀行 100 振込み 2 本屋 50 振込み 3 図書館 100 自動 と入力したとします。 別シートにて 「銀行」と手入力したら、その右隣には「100」「振込み」と自動的に抽出して記入されるようにしたいのです。 「本屋」としたら、その隣には「50」 「振込み」となるように・・・。 (※セルは分かれている形です) データの数は2000個ほどあるので、検索してコピー&ペーストというのも非常に非効率かと思い相談させていただきました。 マクロなどは全くわからない人間ですので、数式などでわかるものがあれば幸いです。 どうかお知恵をお貸しください。 よろしくお願いいたします。
- ベストアンサー
- オフィス系ソフト
- エクセルのマクロについて質問です。
エクセルのマクロについて質問です。 たとえば、 セルA1からAA1までのセルの中で、コピーとペーストを行います。(これは記録マクロで作ります) それと同じ作業を、3行下のA3からAA3の行でも行い、 また、3行下のA6からAA6の行で行う といった作業をマクロで作る方法を 教えていただきたいです。
- 締切済み
- その他(学校)
- エクセルマクロ 別シートへ行列を入れ替えてコピペ
下記内容のエクセルのマクロをご教示いただきたいと存じます。 ①「data」シートのB2からデータが入力されている最終行までをコピー(20行目までデータが入力されていたとすると、B2~B20をコピー。最終行は不定) ②「result」シートのE列のデータが入力されている最終行の次行に①のデータを行列を入れ替えてペースト(E列のデータが19行目まで入力されていたとすると、「E20」セルに①のデータ<この場合だと、「data」シートのB2~B20のデータ>を行列を入れ替えてペースト。「result」シートのE列の最終行は不定)
- ベストアンサー
- Visual Basic
- Excelのマクロを連続で
Excelのマクロを作ってあるワークシートがいくつかあります。それを、Aのワークシートを立ち上げてボタンを押してそのマクロを起動~終了。それが終わったら、Bのワークシートを立ち上げてボタンを押してそのマクロを起動~終了。それが終わったら、Cのワークシートを立ち上げてボタンを押してそのマクロを起動~終了。というように10回くらい作業しています。以前は、Aの次にCということもありましたが、今は、A~B~Cと決まった順序で起動しますので、これをマクロで自動化できないのでしょうか?ただし、現状のボタンでのそのワークシートのみの起動~終了も可能にしておきたいと思います。
- ベストアンサー
- オフィス系ソフト
- 別シートにコピペするマクロの作り方?
シートAのデータをコピーして、 そのデータを別シートに貼り付ける…というマクロを使っています。 貼り付ける先のシートには、どんどんデータがたまっていく倉庫のような役割です。 私がくんだマクロは、次のような手順で処理をします。 1.まず、そのシートのA1を選択し、 2.《CTRL+下》のようなコマンドで、「データが初めて空白になるセル」まで移動します。 3.そして、そこに「はりつけ」。 4.貼りつけが終わったら、もともといたシートに戻ってくる。 ・・・そういうマクロなのですが、あまりに洗練されていないというか、 ボタンをおすたびに、コンピューターの画面が切り替わって、 「ああ。頑張って作業をしてくれているな」 ということが、わかるマクロです。 ・・・ たしか、こうした一連の作業を、もっと高速処理できるマクロの組み方があったように思うのですが、どのようなプログラムをくんだらよいでしょうか?
- ベストアンサー
- Excel(エクセル)
- Excelマクロ 統合セルの連続コピペ
Excelマクロの初心者です 現在以下のことをマクロで行おうと思ってます。 ファイルAのシートAのC11に入ってる文章を同じファイル内にあるシート2のA46:F51の統合してあるセルにコピペします。 そして次にファイルAのシートD11に入ってる文章をシート3のA46:F51の統合してあるセルにコピペします。 このような作業をファイルAのAC11まで続けたいです。 どなたか教えて頂けないでしょうか? よろしくお願いします。
- 締切済み
- オフィス系ソフト
- エクセル 別ファイルの情報を取り込むマクロ
エクセル初心者です。上級者の方には簡単だと思うのですが 私にはどうやってもできないので教えて下さい。 Aというエクセルソフトがあります。これにデスクトップに一時保管したエクセルのファイルを開き(名前不特定)、シートの全体をコピーしたものをAのシート1に貼り付けをする方法はありますか? この後Aで貼り付けた情報を加工していくことになります。 今はいちいち手作業でコピー&ペーストしてますが 他の人も使うことになったので、マクロで処理できれば・・と思っています。よろしくお願い致します。
- ベストアンサー
- オフィス系ソフト
- マクロで別シートに数値を移したいのですが・・・
タイトルにありますとおり、マクロを駆使し、数値を別シートに移したいのですが なにぶんマクロに関してほとんど経験、知識はありません。 毎回手動でコピーを繰り返しているのですが、なんとかマクロで自動コピーできればありがたいです^^; 方法としては、フォームのボタンにマクロを埋め込むような形にしたいと思っております。 以下のようなシートがあったとします。 シート1 (抽出内容”平均”) A B C D E F G 1 回数 25 2 2 3 4 6 3 2 9 3 1行目に、回数とあります。今回は25回目のデータとします。 2行目に、同一シートの別表から抽出された数値が並びます。 この数値は別表でオートフィルで抽出された数字ですので、毎回変更されるものとします。 今回は仮に”平均”という内容で抽出したデータだとします。 シート1 (抽出内容”合計”) A B C D E F G 1 回数 25 2 10 10 20 11 15 16 8 3 同じく、25回目、抽出内容”合計”として、オートフィルで抽出した数値です。 シート2 A B C D E F G H 100 回数 平均(1) 2 3 4 6 3 2 9 101 25 平均(2) 102 平均(3) 103 合計(1)10 10 20 11 15 16 8 104 合計(2) 105 合計(3) 106 107 108 回数 平均(1) 109 26 平均(2) シート2は、シート1で抽出された数値をコピーした表です。 A列は今回の回数、25となっております。この数値はこれより上に24回分の表があり、今回が25回目という意味です。 107行目以降も26、27、28と回数は続いていますが、現状では25が最新とし、108行以降は数値はなく、空白とします。 それぞれ平均、合計共に、シート1で3回抽出し、それぞれ別の数値が入るものとします。 これまでは、シート1で抽出後、手動でコピーし、シート2の該当セルに貼り付ける、という作業でした。 シート1 → シート2 のコピーにマクロを使用したいのですが 回数が25の場合、シート2でA列を検索し、さらに抽出内容が”平均”1回目だった場合 平均(1)にコピーし、2回目だった場合平均(2)にコピーする、といった具合です。 イメージとしては、シート1に、(1)、(2)、(3) と、それぞれ入ったリストボックスなどがあり [平均][合計] のそれぞれボタンがあり、(1)を選び、平均を押すと100行目の平均(1)に入り 合計を押すと、103行目の合計(1)に数値が入る。と、いうような感じです。 この説明で私の意図するところが伝わるか不安ではありますが、このような場合に使えるマクロの式がございましたら ご教示いただけませんでしょうか^^; 実際の表とは若干ちがいますが、大まかなイメージとしては上に書いてある通りです。
- 締切済み
- オフィス系ソフト
- エクセルのセルを参照して別シートに張り付ける
こんにちは。 エクセルのsheet1とsheet2があり、sheet1のセルに入力されている文字や数値をsheet2にコピーしたいと思っています。ただし、コピー先のsheet2のセルの値は、sheet1を参照するだけでなく文字や数値として表示できないかと悩んでいます。 図で説明すると (sheet1) → (sheet2) A B C D A B C D 1あああ 10 いいい えおう 1いいい えおう 10 あああ 2あああ 10 いいい かけこ 2いいい かけこ 10 あああ 3あああ 10 いいい みまつ 3いいい みまつ 10 あああ 4あああ 10 いいい さぐも 4いいい さぐも 10 あああ また、上記のようにsheet1とsheet2の列は同じ場所ではありません。 このような作業を1回で行うことはできるのでしょうか? よろしくお願いします。
- ベストアンサー
- オフィス系ソフト
お礼
ありがとうございます。 非常に助かりました。 おかげで作業がガンガン進みます!