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

ピボット集計表を別シート「閲覧用」に貼り付けるのですが、
ピボット以外の関数の入った列があるため、
その列を一旦退避させて、ピボットの内容を貼り付けてから、
退避させた関数列を元の位置に戻す、という処理をしています。
(毎日行うルーチン業務になるため)

自分でソースが書けないため、
マクロの記録で作成しました。
きっと、かなり無駄があるんだと思います。
以下のソースで、もっと綺麗ににまとめられる書き方に添削していただけると助かります。
どれだけスッキリするのか勉強したいです。
----------
'数式列を表外に移動
Sheets("閲覧用").Select
Columns("K:L").Select
Selection.Cut
Columns("W:W").Select
Selection.Insert Shift:=xlToRight
Columns("O:P").Select
Selection.Cut
Columns("X:X").Select
Selection.Insert Shift:=xlToRight

'ピボットのコピー
Sheets("ピボット").Select
Range("A4:O500").Select
Selection.Copy
Range("A4").Activate
Range("A1").Select

'閲覧用に貼り付け
Sheets("閲覧用").Select
Range("B6").Select
ActiveSheet.Paste

'表外の数式列を元の位置に移動
Columns("S:T").Select
Selection.Cut
Columns("K:K").Select
Selection.Insert Shift:=xlToRight
Columns("V:W").Select
Selection.Cut
Columns("Q:Q").Select
Selection.Insert Shift:=xlToRight
Range("A1").Select

A 回答 (3件)

こんにちは、


こんな感じでしょうか、、、

With Sheets("閲覧用")
.Columns("K:L").Cut
.Columns("W:W").Insert Shift:=xlToRight
.Columns("O:P").Cut
.Columns("X:X").Insert Shift:=xlToRight

'ピボットのコピー '閲覧用に貼り付け
Sheets("ピボット").Range("A4:O500").Copy .Range("B6")

'表外の数式列を元の位置に移動
.Columns("S:T").Cut
.Columns("K:K").Insert Shift:=xlToRight
.Columns("V:W").Cut
.Columns("Q:Q").Insert Shift:=xlToRight
End With
Range("A1").Select
    • good
    • 0
この回答へのお礼

ありがとうございます!
そんなにシンプル化しちゃうんですね。。。

お礼日時:2021/04/08 18:08

#2です。


試してみました。すみません、思い違いでした。
Cutでずれるので実際は、Q,R列を移動しているのですね。、、
忘れてください。。
    • good
    • 0

処理内容を確認して、少し気になりました


マクロの記録なので信じていますが、
>退避させた関数列を元の位置に戻す、という処理をしています。
Columns("Q:Q")
元に戻らないと思いますが、、?気のせいかな。
    • good
    • 0
この回答へのお礼

具体的に説明すると、長くややこしくなるので簡単に言うと、

2列の塊をを2か所、右の方に移動すると、
4列詰められるので左にずれます。
そして最初の2列を戻すと、逆に右に2列ずれる・・・という具合で。

結果的には、VW列をP列とQ列の間に挿入すると元に戻ります。

お礼日時:2021/04/08 18:12

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