Excel2003でSUMIFSを実現

マクロ / VBA

過去記事[Excel2007 新関数 =SUMIFS()

過去記事[自分で関数を作ってみる



Excel2007には新関数SUMIFSというものがあります。過去記事参照。

Excel2003以前にはない関数で、大変便利な関数です。でも2003以前のバージョンでも同じような関数を使いたい!
ということでユーザー定義関数で作ってみました。

21-1.jpg



Optional引数

関数を定義する時、引数も定義します。しかし省略する引数もあると思います。

今回の場合だとSUMIFSの条件数を3つまで用意していますが、条件が2つまでで十分な場合(条件3を使用しない場合)もあります。その様な場合は条件3を省略可能な引数として定義します。


Optional ***  とする事でその引数は省略可能です。但し、省略した場合のデフォルト値を設定しておく必要もあります。


ではSUMIFSの実際のコードです



解説

全然スマートな書き方ではありませんが一応これで使えます。

範囲の中で一段ずつ条件が合致するか調べていき、合致すれば足していく・・・最後の行までForで繰り返します。

関数名
SUMIFS( 計算範囲 , 条件範囲1 , 条件1 , 条件範囲2 , 条件2 , 条件範囲3 , 条件3 )
機能
複数の条件に一致する数値の合計を求めます。
=SUMIFS( D2:D10 , A2:A10 , “商店A” , B2:B10 , “みかん” )



Excel2007のSUMIFSは条件数127まで使えますが、このコードでは条件3までです。いじればいくらでも増やせますが。


ちなみにユーザー定義関数でも関数ウィザードは使えます。
21-2.jpg



※注意 このSUMIFSは行(縦)に対応しており、列(横)に対応しておりません。

コード内の「Rows」を「Cols」に変えると列対応となります。


ユーザー定義関数を使わないでExcel2003でSUMIFS


Comment

  1. yosi より:

    記述のSUMIFS大変便利に使わさせて頂いています。
    条件の設定であいまい検索例えば、みかんを例にすると、"なつみかん","紀州みかん",をまとめて、"*みかん"で集計したいのですが・・・コードを訂正すれば可能でしょうか?

コメントをどうぞ

メールアドレスが公開されることはありません。

ワイルドカード バーコード 図形 COUNTIF SUMIF 作業効率UP 検索 クイズ コンビニ 目標 XLSTART 偏差値 COLUMN 標準報酬月額 フロー図 ネットプリント 無料 チルダ NA() SUM 封筒 配列数式 履歴書 VLOOKUP TODAY コピペ 印刷 STDEV 条件付き書式 テンプレート
  • 関西在住の30代サラリーマン。事務職で毎日Excelと戯れています。
    システム導入なんて資金が無い!Excelでなんとかやりたい零細中小の社長さん・事務員さんの力になればと思います。
    詳しいプロフィール


PAGE TOP ↑