[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『最終の行の上に50行挿入して数式をコピーペーストする』(Mina)
はじめまして。
こちらでいろいろと検索させていただきましたが、
ナカナカ自分に合ったことが見つからず
思い切って質問させていただきます。
B1:E30の表があります。
最終B30の上に50行挿入して、挿入した50行に最終行のD30:E30の数式を
コピーしたいと思っています。
現在はA30にENDという文字を入れておいてCTRL+↓で最終行を求め
手動で行挿入&コピペをしているのですが、マクロを上手に使って
手早くできる方法はないでしょうか?
マクロの記述でやってみたのですが上手にできません。
アドバイスをしていただきたくお願い致します。
Sub Macro5()
'
' Macro12 Macro
' マクロ記録日 : 2015/7/2 ユーザー名 : Minako
'
'一番下の行を求める
Range("A1").Select Selection.End(xlDown).Select
'行を50行挿入する
Selection.EntireRow.Insert ←1行しかできない
'B31:E31をコピーして行挿入した分だけ数式の貼り付けを行う
Range("B31:E31").Select ←ここから下はメチャメチャです Selection.Copy Selection.End(xlUp).Select Range("B30").Select ActiveSheet.Paste
'コピーモードの終了
Application.CutCopyMode = False
'データの最終行へ移動する
Selection.End(xlUp).Select
End Sub
列のDとEには関数が入っています。
< 使用 Excel:Excel2003、使用 OS:Windows7 >
Sub test() With Range("B1").End(xlDown) .Offset(1).Resize(50, 4).Insert xlDown With .Offset(, 2).Resize(, 2) .AutoFill .Resize(51) End With End With End Sub
Sub test2() With Range("B1").End(xlDown) .Resize(50, 4).Insert xlDown With .Offset(, 2).Resize(, 2) .AutoFill .Offset(-50).Resize(51) End With End With End Sub
(マナ) 2015/07/03(金) 00:03
Sub test3() With Range("d1").End(xlDown) .Offset(1, -2).Resize(50, 4).Insert xlDown With .Offset(, 2).Resize(, 2) .AutoFill .Resize(51) End With End With End Sub
Sub test4() With Range("d1").End(xlDown) .Offset(, -2).Resize(50, 4).Insert xlDown With .Offset(, 2).Resize(, 2) .AutoFill .Offset(-50).Resize(51) End With End With End Sub
(マナ) 2015/07/03(金) 19:39
こんにちは。 Macro5を少し変えてみました。
Sub Macro5_2() ' Macro12 Macro ' マクロ記録日 : 2015/7/2 ユーザー名 : Minako
dim i as long
'一番下の行を求める Range("A1").Select Selection.End(xlDown).Select
'行を50行挿入する for i = 1 to 50 ←50回繰り返す Selection.EntireRow.Insert ←1行しかできない next i
Range("B30:E30").Select Selection.Copy range(range("B30"),range("A10000").End(xUp)).Select ←範囲はここでいいのか? msgbox "" ←範囲を見たいので ちょっと止めてみる ActiveSheet.Paste end sub
セルをコピーする方法は、お書きになった 範囲選択→コピー→貼付先選択→貼付 のほかに 範囲選択→コントロールキーを押さえて→選択範囲を貼付先までドラッグ とか コピー元セルのフィルハンドルをダブルクリック などもありますので 記録して研究してみてください。 (記録後にヘルプを読むのがお勧めです。読める範囲で構いませんから。)
( 佳 ) 2015/07/04(土) 09:28
50行挿入できるところまでは上手く出来ました。
質問することが上手くお伝えすることができなくて申し訳ないのですが、
肝心なのは30行目のセルなんです。
フツーだと下へコピーしていけば良いと思うのですが、
タイトル行に各列1〜30のsumとかsumuifとかの関数が入っているので
一番下のセルの位置情報を変えたくないんです。
(常に最終の行をタイトル行の関数に反映させたい)
なので、行挿入の後、一番下になってる行の関数の情報なんかを・・・
すみません、自分で何が質問したいのかか判らなくなってきてしまいました^^;
もしかしたら作表の仕方が悪いのかもしれません。
もう一度よく考えて作表しなおしてから再度質問させていただきます。
よろしかったら、その時にまた教えていただければ嬉しいです。
お手数をおかけしました、ありがとうございました。
(Mina) 2015/07/04(土) 18:24
Sub test5() With Range("d1").End(xlDown) .Offset(, -2).Resize(50, 4).Insert xlDown With .Resize(, 2) .AutoFill .Offset(-50).Resize(51) End With End With End Sub
(マナ) 2015/07/04(土) 20:17
やはり私の作った表が悪いようです。
最終行に執着しすぎちゃって・・・^^;
標題に入る関数を見直してから
再質問させていただきますね。
いろいろと勉強になりました。
ありがとうございました。
(Mina) 2015/07/06(月) 23:34
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.