こんにちは、Ryoです。
コピーしてクリップボードに格納したデータを貼り付ける際に内容を指定して指定範囲に貼り付けることができますので、加算/減算/除算/乗算など演算して貼り付けることが可能です。今回はこの特殊な貼付けについて書いていきます。
1.サンプル概要
サンプルの下表に対し、セルF2(乗算用)/セルF5(加算用)/セルF8(減算用)に設定したデータをコピーし、B列のB2~B11に演算して貼り付けを行います。

≪乗算して貼り付け≫
セルF2のデータをコピーし乗算を指定、セルB2 ~B11の範囲へ貼り付けることで「単価」欄の値を一律「×1.2」としています。

≪加算して貼り付け≫
セルF5のデータをコピーし加算を指定、同様にセルB2~B11の範囲へ貼り付けることで一律「5」が単価欄のデータにプラスされます。

≪減算して貼り付け≫
セルF8のデータをコピーし減算を指定、後は同様にセルB2~B11範囲に貼り付けて一律「3」をマイナスしています。

以上がサンプル概要になります。
2.サンプルコード
◆乗算して貼り付け
Sub Sample1()
'セルF2の値をコピーする
Range("F2").Copy
'セルB2~B11にコピーしたデータを乗算し貼り付ける
Range("B2:B11").PasteSpecial xlPasteValues, _
xlPasteSpecialOperationMultiply
End Sub
◆加算して貼り付け
Sub Sample2()
'セルF5の値をコピーする
Range("F5").Copy
'セルB2~B11にコピーしたデータを加算し貼り付ける
Range("B2:B11").PasteSpecial xlPasteValues, _
xlPasteSpecialOperationAdd
End Sub
◆減算して貼り付け
Sub Sample3()
'セルF8の値をコピーする
Range("F8").Copy
'セルB2~B11にコピーしたデータを除算し貼り付ける
Range("B2:B11").PasteSpecial xlPasteValues, _
xlPasteSpecialOperationSubtract
End Sub
このようにクリップボードに格納されているデータから貼り付ける内容を指定し、指定範囲に貼り付けを行うにはPasteSpecialメソッドを利用します。
オブジェクト.PasteSpecial(Paste, Operation, SkipBlanks, Transpose)
PasteSpecialメソッドの引数Pasteには貼り付ける種類を指定、引数Operationは貼り付ける際に演算を行う場合に指定します。各引数に設定する値は以下の通りです。
≪引数Pasteに設定するxlPasteTypeクラスの定数≫
| 定数 | 内容 |
| xlPasteAll | すべてを貼り付け |
| XlPasteAllExceptBorders | 輪郭以外のすべてを貼り付け |
| xlPasteAllMergingConditionalFormats | すべてを貼り付け、条件付き書式をマージ |
| xlPasteAllUsingSourceTheme | ソースのテーマを使用しすべてを貼り付ける |
| xlPasteColumnWidths | コピーした列の幅を貼り付ける |
| xlPasteComments | コメントを貼り付ける |
| xlPasteFormats | コピーしたソースの形式を貼り付ける |
| xlPasteFormulas | 数式を貼り付ける |
| xlPasteFormulasAndNumberFormats | 数式と数値の書式を貼り付ける |
| xlPasteValidation | 入力規則を貼り付ける |
| xlPasteValues | 値を貼り付ける |
| xlPasteValuesAndNumberFormats | 値と数値の書式を貼り付ける |
≪引数Operationに設定するxlPasteSpecialOperationクラスの定数≫
| 定数 | 内容 |
| xlPasteSpecialOperationAdd | コピーしたデータを対象セルの値に加算 |
| xlPasteSpecialOperationDivide | コピーしたデータを対象セルの値に除算 |
| xlPasteSpecialOperationMultiply | コピーしたデータを対象セルの値に乗算 |
| xlPasteSpecialOperationNone | 貼り付けによる計算を実施しない |
| xlPasteSpecialOperationSubtract | コピーしたデータを対象セルの値に減算 |
各サンプルではセルに予め入力された値をコピーし、それを貼り付ける際にPasteSpecialメソッドを利用して演算することで乗算や加算・減算を行っています。
処理する際は演算処理の他に「値のみの貼り付け=xlPasteValues」を行わないと貼付け元の書式が適用されてしまうので注意が必要です。
3.まとめ
このPasteSpecialメソッドは指定数値を加算や除算などで演算して貼り付けたり、数式のみを貼り付けたりする「形式を選択して貼り付け」に相当するものです。
知っておくと演算処理が楽になるケースも多いので、機会があればぜひご活用ください。
以上、コピーした数値を演算して貼り付ける方法についてでした!今回の記事が何かの参考になれば幸いです。
Ryo

