Articles

Excel2003でSUMIFSを実現

この記事をdel.icio.usに登録する この記事をはてなブックマークに登録する この記事をGoogleブックマークに登録する この記事をYahoo!ブックマークに登録する この記事をdiggに登録する この記事をlivedoor clipに登録する この記事をNewsGattor Onlineに登録する

過去記事[Excel2007 新関数 =SUMIFS()
過去記事[自分で関数を作ってみる

Excel2007には新関数SUMIFSというものがあります。過去記事参照。
Excel2003以前にはない関数で、大変便利な関数です。でも2003以前のバージョンでも同じような関数を使いたい! ということでユーザー定義関数で作ってみました。
21-1.jpg




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

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

ではSUMIFSの実際のコードです
Function SUMIFS(計算範囲, 条件範囲1, 条件1, Optional 条件範囲2 = 0, _
 Optional 条件2 = 0, Optional 条件範囲3 = 0, Optional 条件3 = 0)
    SUMIFS = 0
    For x = 1 To 計算範囲.Rows.Count
        If 条件2 = 0 Then
            If 条件範囲1.Rows(x) = 条件1 Then
                SUMIFS = SUMIFS + 計算範囲.Rows(x)
            End If
        Else
            If 条件3 = 0 Then
                If 条件範囲1.Rows(x) = 条件1 And 条件範囲2.Rows(x) = 条件2 Then
                    SUMIFS = SUMIFS + 計算範囲.Rows(x)
                End If
            Else
                If 条件範囲1.Rows(x) = 条件1 And 条件範囲2.Rows(x) = 条件2 And _
 条件範囲3.Rows(x) = 条件3 Then
                    SUMIFS = SUMIFS + 計算範囲.Rows(x)
                End If
            End If
        End If
    Next
End Function


解説
全然スマートな書き方ではありませんが一応これで使えます。
範囲の中で一段ずつ条件が合致するか調べていき、合致すれば足していく・・・最後の行まで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

関連記事




この記事をdel.icio.usに登録する この記事をはてなブックマークに登録する この記事をGoogleブックマークに登録する この記事をYahoo!ブックマークに登録する この記事をdiggに登録する この記事をlivedoor clipに登録する この記事をNewsGattor Onlineに登録する

トラックバック一覧

コメント一覧

Re: Excel2003でSUMIFSを実現

記述のSUMIFS大変便利に使わさせて頂いています。

条件の設定であいまい検索例えば、みかんを例にすると、"なつみかん","紀州みかん",をまとめて、"*みかん"で集計したいのですが・・・コードを訂正すれば可能でしょうか?

  • 2011/11/09
  • yosi ◆ VsW93APQ
  • [ URL ]
  • [ 編集 ]
コメント投稿フォーム
Name
Subject
Mail
URL
Comment

Password
Secret
管理者にだけ表示を許可する

Navigations, etc.

Navigations

ブログ記事を検索

SPONSORS

人気記事ランキング

ブログパーツ

メールフォーム

名前:
メール:
件名:
本文:

Tweet

最新記事