アプリ版:「スタンプのみでお礼する」機能のリリースについて

よろしくお願いいたします

Sheet1で”OFFSET(sheet1!$P$2,0,0,COUNTA(sheet1!$P$1:$P$11)-1,9)"での範囲の値を
Sheet2に順次貼り付るマクロはどのように書けば宜しいのでしょうか?

sheet1のOffset関数の範囲にはVlookup関数で”P列”に入力される値に応じて値がかえされます
文字列であったり数値であったりします

貼り付けた後にsheet1のP列を消去してSheet2の貼り付けられた続きに貼り付けていくという
作業を考えております

VBAでOffset関数で表される範囲の定義付け、Sheet2へのコピー方法の際の範囲の定義が分かりません

ご指南よろしくお願いいたします

A 回答 (2件)

こんにちは



>順次貼り付るマクロはどのように~~
貼り付け先が同じ形状の範囲であれば、そのまままとめて範囲でのコピペが可能です。
貼り付け先が不明なので、とりあえずコピーだけ行うものとして・・・

Set sh1 = Worksheets("sheet1")
sh1.Range("P2").Resize(WorksheetFunction.CountA(sh1.Range("P1:P11")) - 1, 9).Copy
'Sheet2へ貼り付け??


セル一つずつを処理したいというのであれば、行と列のループで、

For rw = 2 To WorksheetFunction.CountA(sh1.Range("P1:P11"))
For cl = 16 To 24 'P列からX列までの9列
 Worksheets("sheet1").Cells(rw, cl).Copy
 'Sheet2へ貼り付け??
Next cl
Next rw
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

試してみました。

ですが、設問が悪かったのですが指定された範囲の関数が貼り付けられてしまいました。

offset関数での範囲のR2:X11にはvlookup関数で他のリストから値を返しておりますのでセルの値を貼り付けたいのです

実際には1度目はsheet1のP2:X3のそれぞれの値をSheet2のA2:I3に貼り付けて2度目はsheet1のP2:X4をsheet2の続きの行へ貼り付けるといった流れです

質問の仕方が悪くて申し訳ないのですが引き続き回答をよろしければお願いいたします

お礼日時:2017/06/26 15:53

ANo1です



>~~セルの値を貼り付けたいのです
VBAでコピペすると、手動操作のコピペと同様の結果となります。

値だけの貼り付けを行いたい場合は、手動では「形式を選択して貼り付け」-「値」の操作を行いますが、VBAで同様の処理を行いたいのであれば、
 Range.PasteSpecial Paste:=xlPasteValues
を利用なさればよろしいと思います。
https://msdn.microsoft.com/ja-jp/library/office/ …
    • good
    • 0
この回答へのお礼

早い回答ありがとうございます

試してみてうまく動きました

Set sh1 = Worksheets("list1")
Set sh2 = Worksheets("test")
sh1.Range("P2").Resize(WorksheetFunction.CountA(sh1.Range("P1:P11")) - 1, 9).Copy
sh2.Range("A1048576").End(xlUp).Offset(1).PasteSpecial Paste:=xlPasteValues

こんな感じで動かしてみて動いたのですがもし、こうした方が良いよというのがありましたら
図々しいのですが指摘お願いできないでしょうか?

よろしくお願いいたします

お礼日時:2017/06/27 01:38

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!