Excel VBA

【Excel VBA】VBAでワークシート関数を使用する方法

本記事の内容

VBAのマクロ内でエクセルの関数を使用する方法をご紹介

→ ApplicationオブジェクトのWorksheetFunctionプロパティを使用

 

こんな方におすすめ
  • Excel VBAでエクセルのワークシート関数を使用したい方
  • VBA初心者の方

 

ワークシート関数とは?

ワークシート関数とは、

Excelの数式に入力して使用できる関数

のことです。

 

<ワークシート関数例>

  • SUM
  • MIN
  • MAX
  • SUMIF

 

ワークシートの呼び出し方法

ワークシート関数は、Applicationオフジェクト内のWorksheetFunctionオブジェクト内に定義されています。

 

そのため、呼び出しを行う際には下記のように記載いたします。

Application.WorksheetFunction.ワークシート関数名(引数)

 

記述時はApplicationを省略して下記のように記載可能です。

WorksheetFunction.ワークシート関数名(引数)

 

使用例 : SUM関数, MAX関数を使用

SUM関数, MAX関数を用いるサンプルコードは下記の通りです。

<サンプルコード>

Sub sample()

    '各店舗の合計売上(Long型の変数)を定義
    Dim shopA_sum As Long
    Dim shopB_sum As Long
    Dim shopC_sum As Long
    
    '全店舗の合計売上(Long型の変数)を定義
    Dim shopAll_sum As Long

    '各店舗の最大売上(Long型の変数)を定義
    Dim shopA_max As Long
    Dim shopB_max As Long
    Dim shopC_max As Long
    
    '全店舗の最大売上(Long型の変数)を定義
    Dim shopAll_max As Long
    
    '合計売上の計算
    shopA_sum = Application.WorksheetFunction.Sum(Range("D5:D16"))
    shopB_sum = Application.WorksheetFunction.Sum(Range("E5:E16"))
    shopC_sum = Application.WorksheetFunction.Sum(Range("F5:F16"))
    shopAll_sum = Application.WorksheetFunction.Sum(Range("D5:F16"))
    
    '最大売上の計算
    shopA_max = WorksheetFunction.Max(Range("D5:D16"))
    shopB_max = WorksheetFunction.Max(Range("E5:E16"))
    shopC_max = WorksheetFunction.Max(Range("F5:F16"))
    shopAll_max = WorksheetFunction.Max(Range("D5:F16"))

    '結果を出力
    Debug.Print "店舗Aの合計売上 : " & shopA_sum
    Debug.Print "店舗Bの合計売上 : " & shopB_sum
    Debug.Print "店舗Cの合計売上 : " & shopC_sum
    Debug.Print "全店舗の合計売上 : " & shopAll_sum
    Debug.Print "店舗Aの最大売上 : " & shopA_max
    Debug.Print "店舗Bの最大売上 : " & shopB_max
    Debug.Print "店舗Cの最大売上 : " & shopC_max
    Debug.Print "全店舗の最大売上 : " & shopAll_max
    
End Sub

 

<Excelのシートの記載>

<Excelのシートの記載>

 

<マクロ実行結果>

<マクロ実行結果>

 

以上がVBAでワークシート関数を使用する方法となります。

ここまでご覧いただきありがとうございました。

 

初心者におすすめの書籍はこちら

 

VBAに詳しくなりたい方におすすめの書籍はこちら

 

 

ABOUT ME
かめぞう
はじめまして。 かめぞうです。組込ソフトウェア開発会社に勤務する現役エンジニアをしています。私が買ってよかったもの、人生設計、サラリーマン生活についてなど、テーマを絞らず発信しています。リクエストや改善要望など、お気軽にご連絡ください。