この記事では、VBAコードを使用してExcelで複数の条件を使用してVBAでSUMIF関数を使用する方法を学習します。

出力を取得するには、OFFSET関数とCOUNTA関数を組み合わせて名前マネージャーリストを作成します。

例を挙げて理解しましょう:

  • 2012年から2014年までのセールスマン、地域、製品の販売レポートがあります。

img1

  • 次の条件を満たす売上高を調べたい:-

img2

  • すべての条件について。名前範囲を作成する必要がありますSalesmanの動的な名前範囲を作成するには:

Ctrl + F3ショートカットキーを押します> [新規]をクリックして、数式を= OFFSET(Sheet1!$ B $ 1,1,0、COUNTA(Sheet1!$ A:$ A)-1)として入力します

img3

同様に、他の条件の名前付き範囲を作成します* CTRL + F3を押して、名前マネージャーウィンドウを開きます(既に作成されているリストを参照してください)

img4

  • [数式]タブの[名前の貼り付け]機能を使用すると、定義済みの名前の範囲リスト全体がセルに表示されます。

img5

  • リストの貼り付けをクリック

img6

nDate * = OFFSET(Sheet1!$ A $ 1,1,0、COUNTA(Sheet1!$ A:$ A)-1)

nProduct * = OFFSET(Sheet1!$ D $ 1,1,0、COUNTA(Sheet1!$ A:$ A)-1)

nRegion * = OFFSET(Sheet1!$ C $ 1,1,0、COUNTA(Sheet1!$ A:$ A)-1)

nSales * = OFFSET(Sheet1!$ E $ 1,1,0、COUNTA(Sheet1!$ A:$ A)-1)

nSalesman * = OFFSET(Sheet1!$ B $ 1,1,0、COUNTA(Sheet1!$ A:$ A)-1)

VBエディターを起動するには、以下の手順に従う必要があります。[開発者]タブをクリックします。[コード]グループから、[VisualBasic]を選択します

img7

  • [挿入]、[モジュール]の順にクリックします

img8

  • これにより新しいモジュールが作成されます。

  • モジュールサブに次のコードを入力しますVBASumifs()mysalesman = [H3] myregion = [H4] myproduct = [H5]

tsales = Application.WorksheetFunction.SumIfs([nsales]、[nsalesman]、mysalesman、[nregion]、myregion、[nproduct]、myproduct)

[H6] = tsales End Sub

img9

[リボンの挿入]> [形状]> [画像の描画]をクリックします。画像を右クリックして、[マクロの割り当て]をクリックします

img10

img11

  • マクロを割り当てた後。 [販売の更新]ボタンをクリックすると、セルH6に出力が表示されます

img12

注:-セールスマンの名前、地域、製品を変更した後、[販売の更新]をクリックする必要があります。

2つの日付の間の条件を満たす販売を見つけるため。以下は基準のスナップショットです:

img13

次のコードを使用します:

サブSumifs2Dates()

mysalesman = [H3] myregion = [H4] myproduct = [H5]

stdate = [H6]

EndDate = [H7]

tsales = Application.WorksheetFunction.SumIfs([nsales]、[nsalesman]、mysalesman、[nregion]、myregion、[nproduct]、myproduct、[ndate]、 “> =”&stdate、[ndate]、 “⇐”& EndDate)

[H8] = tsales End Sub

img14

  • Alt + F8ショートカットキーを押してマクロウィンドウを開き、マクロを選択します。

  • または、F5キーを押してVBA画面でコードを実行することもできます。

  • マクロを実行した後、セルH8に出力を取得します

img15

これは、VBAでSUMIFの複数の基準を使用して、2つの日付間の総売上を計算する方法です。