[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『1日の列に値で貼り付け』(赤由良)
Sheet1のC1:AM30を選択、コピー。Sheet2のE3に値で貼り付け。 上の内容をマクロの記録で取ったコードが下になります。 Sheet2の一行目には月の日付が数値で月/日の形式で入力されています。
Sub 値で貼り付け() ' ' 値で貼り付け Macro '
' Range("C1:AM30").Select Selection.Copy ActiveWindow.SmallScroll Down:=-33 Sheets("Sheet2").Select ActiveWindow.SmallScroll Down:=-21 Range("E3").Select Selection.PadteSpecial Paste:=xlPasteValues, Operation:=xINone, SKipBlanks _ :=False, Transpose:=False End Sub
今月はE列が1日だったのでE3に貼り付けましたが、1日の列は毎月変わります。 やりたいのは、Sheet1のC1:AM30を選択してSheet2の一行目の1日の列の3行目に値で貼り付けるというものです。 マクロは記録をとることしか使えないレベルです。そもそも上のコードを実行しても何故かコピー範囲にない日付と曜日の情報が入り、2行ずれた状態で、貼り付けされました。
ご教授お願いします。
< 使用 Excel:Excel2010、使用 OS:Windows7 >
>何日に貼りたいかの情報はどこにあるのでしょうか?
必ず1日の2行下、3行目に貼り付けをしたいです。
>貼り付け先が1日の場合はE3セルからだと判りましたが、2日の場合はどこになるのでしょう?
今回は1日がE3にあっただけで、1日の列は毎月変わります。2日の場合は、1日の右隣になりますがコピー範囲を貼り付けたら自然に揃います。1日の位置が動くという説明が不足していました。1から31日の表で、始まりの1日の位置が可変します。
>SHeet2の1行目が日付ということは、横にとても長くなっていくのでしょうか?
その通りです。ただ、列幅は狭いのでスクロールしない範囲に収まります。
>月が変わった後は、またE3セルに戻って貼り付け?
月が変わっても、1日の位置に貼り付けは変わらないです。 (赤由良) 2018/11/08(木) 12:17
>1日の位置が動くという説明が不足していました
最初の質問でも動くことはわかりますが、何で動くのかがわかりません。 1日からの表なら常に固定では? それとも貼り付け先は1週目の月曜とか日曜から始まるのでしょうか? そういったことをきちんと書いて下さい。 (コナミ) 2018/11/08(木) 12:33
マクロには疎く説明が不足して申し訳ありません。 1日という情報があればそのセルを参照して・・・というものを勝手にイメージしていましたが、考えると1日は1日でも月が違うと中身も変わり参照できないですよね。
毎月1日の位置が変わってもその列に貼りつけることをやりたかったのですが。
位置が変わる理由についてはお待ちください。 (赤由良) 2018/11/08(木) 12:51
理由ですが、前の月の最終月曜日から最終日までを表の最初にいれており、その隣から来月の1日を入れるためです。 (赤由良) 2018/11/08(木) 15:46
まぁ、1行目に手入力で年月日を入れていれば、ここから探すだけなのですが、1行目を自動で埋める処理があっても良いですよね? 今は31日分手打ち、または足し算する数式でも入っているのでしょうか。
それと、まだ判らないのは、Sheet1のコピー元範囲は常に同じでしょうけど、これをSheet2の何日目に貼ればよいのかは、何処を見れば判るのでしょう? Sheet1のどこかのセルに、年月日が書かれているのでは?、と思うのですが。
(???) 2018/11/08(木) 16:40
Sub test() Dim wk1 As Worksheet Dim wk2 As Worksheet Dim dw As Date Dim i As Long
Set wk1 = Sheets("Sheet1") Set wk2 = Sheets("Sheet2") dw = wk1.Range("A1").Value
For i = 5 To wk2.Cells(1, wk2.Columns.Count).End(xlToLeft).Column If dw = wk2.Cells(1, i).Value Then Exit For End If Next i
wk1.Range("C1:AM30").Copy wk2.Cells(3, i).PasteSpecial Paste:=xlPasteValues End Sub (???) 2018/11/08(木) 17:15
作動しました。ありがとうございます。 二点質問です。 色々月を試していましたが、今年の10月のように1日が月曜の場合。つまり9月が日曜日で終わる場合は、Sheet2のAN列から右に一月分貼り付けされました。 このような月は年に1、2回あるかないかなので、別にコピーしたものをそのままドラッグして左に動かすだけですから困りはしませんが、何故AMの隣、ANに貼り付けされるのかが気になります。後学の為にご教授お願いします。 二点目。このコードを使えば別ブックからコピーデータを参照することもできるのではないかと考えたのですが、フルパスを入れるくらいしか思い浮かばず。ヒントをいただけると幸いです。 (赤由良) 2018/11/09(金) 07:54
そして、他ブックからのコピーももちろん可能です。 マクロ内でWorkBooks.Open を使ってブックを開いて(WorkBookオブジェクト宣言した変数に代入すると良いでしょう)、これのシートをwk1に代入するよう、変えてみてください。
(???) 2018/11/11(日) 02:28
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.