大体でIT

-ちょっと使えるネタを紹介-

大体でIT

Excel VBAで、SumIf関数を使う方法について、ご紹介します。「WorksheetFunction」を使う方法と、「埋め込み数式」を使う方法があります。「埋め込み数式」を使う方が簡単に入力ができます。計算した結果を、VBAの中で使用した場合は、「WorksheetFunction」の方が便利です。

はじめに

この記事では、VBAでSumif関数を使う方法について、ご紹介します。

Sumif関数を使うには、「WorksheetFunction」を使う方法と「埋め込み数式」を使う方法があります。

計算した合計値を、セルに入力したいのであれば、「数式」を使う方法が簡単です。

計算した合計値を、VBAの中でさらに使用するのであれば、「WorksheetFunction」が便利です。

では、VBAでSumif関数を使う方法について、解説していきます。

この記事で紹介すること

  • VBAでSumif関数を使う方法

目次から見たい項目へ移動すると便利ですよ。

目次

VBAコードまとめ

Sumif関数を使うVBAコードについて、まとめています。

VBAコードだけを確認したい場合に、ご活用ください。

'■WorksheetFunctionを使う
'Sumif関数を使う
Cells(2, "D") = WorksheetFunction.SumIf(Range("A:A"), "B", Range("B:B"))
'ワイルドカードを使う
Cells(2, "D") = WorksheetFunction.SumIf(Range("A:A"), "*B*", Range("B:B"))
'比較演算子を使う
Cells(2, "D") = WorksheetFunction.SumIf(Range("A:A"), "<=3", Range("B:B"))
'変数を使ってSumIf関数を使う
a = "B" '変数を入力
Cells(2, "D") = WorksheetFunction.SumIf(Range("A:A"), a, Range("B:B"))
'変数を使ってSumIf関数を使う
Cells(2, "D") = WorksheetFunction.SumIf(Range("A:A"), Range("D1"), Range("B:B"))

'■数式を使う
'Sumif関数を使う
Cells(2, "D") = "=SUMIF(A:A,""B"",B:B)"
'ワイルドカードを使う
Cells(2, "D") = "=SUMIF(A:A,""*B*"",B:B)"
'比較演算子を使う
Cells(2, "D") = "=SUMIF(A:A,""<=3"",B:B)"
'「"B"」に一致した価格の合計
a = """B""" '変数を入力
Cells(2, "D") = "=SUMIF(A:A," & a & ",B:B)"
'セルの値を使ってSumIf関数を使う
Cells(2, "D") = "=SUMIF(A:A,D1,B:B)"

では、解説していきます。

WorksheetFunctionでSumIf関数を使う

1つ目の方法は、「WorksheetFunction」で、SumIf関数を使う方法です。

SumIf関数に入力する引数

WorksheetFunctionを使えば、VBAの中でSumif関数を使うことができます。

入力する引数は、ワークシートで使うものと同じで、SumIf関数に入力する引数は、次のようになります。

a = WorksheetFunction.SumIf(範囲, 条件, 合計範囲)

では、VBAでSumif関数を使ってみます。

SumIf関数を使ってみる 

「WorksheetFunctino」で、SumIf関数を使うVBAコードです。

商品が「"B"」に一致したセルの、価格の合計値を計算しています。

Sub TEST1()
    
    '「"B"」に一致した価格の合計
    Cells(2, "D") = WorksheetFunction.SumIf(Range("A:A"), "B", Range("B:B"))
    
End Sub

表を用意しておきます。

表を用意

表を用意

では、VBAコードを実行してみます。

「"B"」に一致するセルの価格を合計

「

「"B"」に一致するセルの価格を合計できました。

ワイルドカードを使う

Sumif関数は、「ワイルドカード」を使うことができます。

ワイルドカードは、主に2つの種類があります。

  • 「*」:すべての値
  • 「?」:すべての値。ただし1文字

という感じです。

Sumif関数で、ワイルドカードを使ってみます。

商品に「"B"」を含むセルの、価格の合計を計算してみます。

Sub TEST2()
    
    '「"B"」を含む価格の合計
    Cells(2, "D") = WorksheetFunction.SumIf(Range("A:A"), "*B*", Range("B:B"))
    
End Sub

表を用意しておきます。

表を用意

表を用意

では、VBAコードを実行してみます。

「"B"」を含むセルの価格を合計

「

「"B"」を含むセルの価格を合計できました。

比較演算子を使う

Sumif関数は、「比較演算子」も使うことができます。

比較演算子は、次のものがあります。

  • 「">値"」 :値より大きい
  • 「"<値"」 :値より小さい
  • 「">=値"」:値以上
  • 「"<=値"」:値以下
  • 「"<>値"」:値以外
  • 「""」  :空白
  • 「"<>"」 :空白以外

順位が「3以下」のセルの、価格の合計を計算してみます。

Sub TEST3()
    
    '「3以下」の価格の合計
    Cells(2, "D") = WorksheetFunction.SumIf(Range("A:A"), "<=3", Range("B:B"))
    
End Sub

表を用意しておきます。

表を用意

表を用意

では、VBAコードを実行してみます。

「"3"」以下のセルの価格を合計

「

「"3"」以下のセルの価格を合計できました。

変数を使う

実務では、変数に条件を入力して、使うことが多いです。

変数を使ってWorksheetFunctionでSumIf関数を使うVBAコードは、こんな感じです。

Sub TEST4()
    
    '変数を入力
    a = "B"
    
    '変数を使ってSumIf関数を使う
    Cells(2, "D") = WorksheetFunction.SumIf(Range("A:A"), a, Range("B:B"))
    
End Sub

表を用意しておきます。

表を用意

表を用意しておきます

では、VBAコードを実行してみます。

「変数」を使ってSumIfで合計値を算出

変数を使ってSumIf関数で合計値を算出しました

変数を使ってSumIf関数で合計値を算出できました。

セルの値を使う

セルに条件を入力しておいて、SumIfで合計値を算出する方法です。

Sub TEST5()
    
    'セルの値を使ってSumIf関数を使う
    Cells(2, "D") = WorksheetFunction.SumIf(Range("A:A"), Range("D1"), Range("B:B"))
    
End Sub

セルに条件を入力しておきます。

セルに条件を入力

セルに条件を入力しておきます

では、VBAコードを実行してみます。

セルの値を使ってSumIfで合計値を算出

セルの値を使ってSumIf関数で合計値を算出しました

セルの値を使って、SumIf関数で合計値を算出できました。

数式を入力してSumIf関数を使う

VBAでSumif関数を使うもう一つの方法は、「数式」を入力する方法です。

埋め込み数式を使ってSumif関数を使う

セルに「数式」を入力してSumif関数を使ってみます。

「"=SUMIF(A2:A10,""B"",B2:B10)"」というように、文字列として入力します。

Sub TEST6()
    
    '「"B"」に一致した価格の合計
    Cells(2, "D") = "=SUMIF(A:A,""B"",B:B)"
    Cells(2, "D").Value = Cells(2, "D").Value '値に変換
    
End Sub

「"B"」のようにダブルクォーテーションがある場合は、「"」は「""」として、「""B""」のように入力します。

数式ではなく、値として入力したいので、「セル.Value = セル.Value」というように、値に変換しています。

表を用意

表を用意

では、VBAコードを実行してみます。

「"B"」に一致するセルの価格を合計

「

「"B"」に一致するセルの価格を合計できました。

数式をコピーして使うと簡単

一旦セルに数式を入力して、「数式をコピー」して使うと簡単です。

セルに入力した数式をコピーする

セルに入力した数式をコピーする

セルに入力した数式をコピーします。

ワイルドカードを使う

次は、「ワイルドカード」を使って合計値を算出してみます。

「"=SUMIF(A2:A10,""*B*"",B2:B10)"」を入力します。

Sub TEST7()
    
    '「"B"」を含む価格の合計
    Cells(2, "D") = "=SUMIF(A:A,""*B*"",B:B)"
    Cells(2, "D").Value = Cells(2, "D").Value '値に変換
    
End Sub

表を用意しておきます。

表を用意

表を用意

では、VBAコードを実行してみます。

「"B"」を含むセルの価格を合計

「

「"B"」を含むセルの価格を合計できました。

比較演算子を使う

次は、「比較演算子」を使って合計値を算出してみます。

「"=SUMIF(A2:A10,""<=3"",B2:B10)"」をセルに入力します。

Sub TEST8()
    
    '「3以下」の価格の合計
    Cells(2, "D") = "=SUMIF(A:A,""<=3"",B:B)"
    Cells(2, "D").Value = Cells(2, "D").Value '値に変換
    
End Sub

表を用意しておきます。

表を用意

表を用意

では、VBAコードを実行してみます。

「"3"」以下のセルの価格を合計

「

「"3"」以下のセルの価格を合計できました。

ワークシートで、Sumif関数を使い慣れている場合は、数式を入力する方が簡単です。

変数を使う

埋め込みの数式でSumIf関数を使いたい場合は、ちょっとクセがあります。

変数を使って埋め込みでSumIf関数を使うVBAコードは、こんな感じです。

Sub TEST9()
    
    '変数を入力
    a = """B"""
    
    '「"B"」に一致した価格の合計
    Cells(2, "D") = "=SUMIF(A:A," & a & ",B:B)"
    Cells(2, "D").Value = Cells(2, "D").Value '値に変換
    
End Sub

変数を「"""B"""」というように「""」と「""」で囲ってあげます。

表を用意しておきます。

表を用意

表を用意しておきます

では、VBAコードを実行してみます。

「変数」を使ってSumIfで合計値を算出

変数を使ってSumIf関数で合計値を算出しました

変数を使ってSumIf関数で合計値を算出できました。

セルの値を使う

セルに条件を入力しておいて、SumIfで合計値を算出する方法です。

数式埋め込みの場合は、この方が違和感がないですね。

Sub TEST10()
    
    'セルの値を使ってSumIf関数を使う
    Cells(2, "D") = "=SUMIF(A:A,D1,B:B)"
    Cells(2, "D").Value = Cells(2, "D").Value '値に変換
    
End Sub

セルに条件を入力しておきます。

セルに条件を入力

セルに条件を入力しておきます

では、VBAコードを実行してみます。

セルの値を使ってSumIfで合計値を算出

セルの値を使ってSumIf関数で合計値を算出しました

セルの値を使って、SumIf関数で合計値を算出できました。

おわりに

この記事では、VBAでSumif関数を使う方法について、ご紹介しました。

Sumif関数を使うには、「WorksheetFunction」を使う方法と「埋め込み数式」を使う方法があります。

計算した合計値を、セルに入力したいのであれば、「埋め込み数式」を使う方法が簡単です。

計算した合計値を、VBAの中でさらに使用するのであれば、「WorksheetFunction」が便利です。

参考になればと思います。最後までご覧くださいまして、ありがとうございました。

関連する記事から探す

カテゴリから探す

カテゴリから見たい項目を探すと便利ですよ。

アーカイブから探す