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
かめぞう
かめぞう
はじめまして。 かめぞうです。ソフトウェア開発会社に勤務する現役エンジニアです。私がエンジニアを続ける中で得た学び、考えを発信しています。リクエストや改善要望など、お気づきの点があればお気軽にご連絡ください。