VBAの勉強を始めてみた

タイトルの通りVBAの勉強を始めました。仰々しくなく、シンプルな形で効率化を図ることを目指しています。VBA以外の話題もあるよ(笑)

ひっそりとExcel関数のおさらい(SUMIFS、COUNTIFS、AVERAGEIFS)

Excelを使っていると、VBAを組むという行為そのものが非効率であるといった場合もあったりします、そういう時にはExcel関数だけで仕事の効率化が図れることもあります。また、Excel関数を覚えておくと、VBAの中でも使うことができるので便利です(ワークシート関数として組み込んであるものだけであり、すべてではない)。VBA関数では出来なかったり、名前は同じ、または似ていても処理結果が違うものもあるので上手に活用していきたいものです。
Excel関数とVBA関数は名前が同じだったり、似ていたりするものがありますが、厳密にはまったく別のものなので、その辺も機会があったら記事に纏めてみたいと思います。

チョイスする関数は私が個人的によく使用したり、好みだったりするので、ご了承ください。

目次

 

複数の条件を満たす数値を合計する(SUMIFS関数)

=SUMIFS(合計対象範囲,条件範囲1,条件1,[条件範囲2,条件2],[条件範囲3,条件3],・・・・・・)
[]内は省略可能な引数

条件1(かつ条件2、かつ条件3・・・・・・)を満たす行の合計対象範囲の数値を合計します。
ちょっと試しにやってみます。
D17セルに、支店が「東支店」で、かつ商品が「ポーション」の売り上げの合計を求めてみます。

 

D17セルに下記の数式を入力します。
=SUMIFS(D2:D15,B2:B15,"東支店",C2:C15,"ポーション")

f:id:kouten0430:20180111134433j:plain

 

これで、条件を満たす行の合計対象範囲の数値が合計されます。

f:id:kouten0430:20180111134613j:plain

 

条件には文字列以外にも、条件式(">0"など)を使うこともできます。また、条件に「文字列」や「条件式」を直接書く以外に、条件の入った「セル」を指定することもできます。
上記の例で、条件を条件の入ったセル指定にした場合は下記のようになります。
=SUMIFS(D2:D15,B2:B15,B17,C2:C15,C17)

 

複数の条件を満たすデータ数をカウントする(COUNTIFS関数)

=COUNTIFS(検索条件範囲1,検索条件1,[検索条件範囲2,検索条件2],[検索条件範囲3,検索条件3],・・・・・・)
[]内は省略可能な引数

条件1(かつ条件2、かつ条件3・・・・・・)を満たす行数をカウントします。
D17セルに、支店が「東支店」で、かつ商品が「ポーション」の数を求めてみます。

 

D17セルに下記の数式を入力します。

=COUNTIFS(B2:B15,"東支店",C2:C15,"ポーション")

f:id:kouten0430:20180111134910j:plain

 

これで、条件を満たす行の数がカウントされます。

f:id:kouten0430:20180111134927j:plain

 

また、SUMIFSと同じように、条件には文字列以外にも、条件式(">0"など)や、条件の入った「セル」を指定することもできます。

 

複数の条件を満たす数値の平均値を求める(AVERAGEIFS関数)

=AVERAGEIFS(平均対象範囲,条件範囲1,条件1,[条件範囲2,条件2],[条件範囲3,条件3],・・・・・・)
[]内は省略可能な引数

条件1(かつ条件2、かつ条件3・・・・・・)を満たす行の平均対象範囲の平均値を求めます。
D17セルに、支店が「東支店」で、かつ商品が「ポーション」の売り上げの平均値を求めてみます。

 

D17セルに下記の数式を入力します。
=AVERAGEIFS(D2:D15,B2:B15,"東支店",C2:C15,"ポーション")

f:id:kouten0430:20180111135126j:plain

 

これで、条件を満たす行の平均対象範囲の平均値が求められます。

f:id:kouten0430:20180111135141j:plain

 

また、SUMIFSと同じように、条件には文字列以外にも、条件式(">0"など)や、条件の入った「セル」を指定することもできます。

 

○○IFと○○IFSの使い分け

条件を満たすものを集計する関数として、○○IFというのもありますが、これは単一条件しか指定できません。○○IFSであれば条件2以降の引数を省略することで、単一条件での集計も可能なので、あえてIFとIFSの使い分けをする必要はないかなーと思ったりします。(IFとIFSでは引数の順序が異なり、ややこしいというのも理由のひとつ)