PR

【VBA】コピーした数値を演算して貼り付ける

これで楽に!?VBA活用
記事内に広告が含まれています。

こんにちは、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

タイトルとURLをコピーしました