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

コメントをどうぞ

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

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


PAGE TOP ↑