在本文中,我们将学习如何使用VBA代码在Excel中的多个条件下在VBA中使用SUMIF函数。

为了获得输出,我们将结合使用OFFSET和COUNTA函数来创建名称管理器列表。

让我们以一个例子来理解:

*我们有2012年至2014年的销售员,地区和产品销售报告。 *我们想找出满足以下条件的销售数字:-

img1

  • 对于所有条件;我们需要创建名称范围来为Salesman创建动态名称范围:

img2

按CTRL + F3快捷键>单击“新建”,然后将公式输入为= OFFSET(Sheet1!$ B $ 1,1,0,COUNTA(Sheet1!$ A:$ A)-1)

同样,为其他条件创建命名范围*按CTRL + F3打开“名称管理器”窗口(请参阅已创建的列表)

img3

  • 使用“公式”选项卡中的“粘贴名称”功能,我们将在单元格中获得整个“定义的名称”范围列表。

img4

  • 单击粘贴列表

img5

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

img6

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编辑器。单击“开发人员”选项卡。从“代码”组中,选择“ Visual Basic”。 *单击插入,然后单击模块

  • 这将创建新的模块。

img7

  • 在Module Sub VBASumifs()mysalesman = [H3] myregion = [H4] myproduct = [H5]中输入以下代码

img8

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

[H6] = tsales End Sub

单击“插入功能区”>“形状”>“绘制图片”,右键单击图片,然后单击“分配宏”

  • 分配宏后;单击更新销售按钮,我们将在单元格H6中获得输出

img9

注意:-更改销售员姓名,地区和产品后,您必须单击更新销售。

img10

img11

查找满足两个日期之间条件的销售;以下是条件的快照:

img12

我们将使用以下代码:

子Sumifs2Dates()

img13

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

  • 按ALT + F8快捷键打开“宏”窗口,然后选择宏。

  • 或者,您可以按F5键在VBA屏幕中运行代码。

img14

  • 执行完宏后,我们将在单元格H8中获得输出

|这就是我们可以在VBA中使用SUMIF多个条件来计算两个日期之间的总销售额的方法。

img15