欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

excel 2007函数sumifs 和countifs的深入理解_excel 2007教程:对中老式工具栏的限制

更新时间: 2015-04-20 00:00:00 责任编辑: Author_N11

 

点评:今天突然对sumifs的应用有了点兴趣。个人觉得可以取代部分sumproduct的多条件求和功能。 今天突然对sumifs的应用有了点兴趣。个人觉得可以取代部分sumproduct的多条件求和功能。
1、客户A的销售额
=SUMIFS(C2:C22,A2:A22,"A")
可替换公式:
=SUMPRODUCT(C2:C22*(A2:A22="A"))
=SUMIF(A2:A22,"A",C2:C22)
2、客户A的1月份销售额
=SUMIFS(C2:C22,A2:A22,"A",B2:B22,1)
可替换公式:
=SUMPRODUCT(C2:C22*(A2:A22="A")*(B2:B22=1))
3、客户A的1月份和3月份销售额
=SUM(SUMIFS(C2:C22,A2:A22,"A",B2:B22,{1,3}))
可替换公式:
=SUMPRODUCT(C2:C22*(A2:A22="A")*(B2:B22={1,3}))
4、客户A和C的销售额
=SUM(SUMIFS(C2:C22,A2:A22,{"A","C"}))
可替换公式:
=SUMPRODUCT(C2:C22*(A2:A22={"A","C"}))
=SUM(SUMIF(A2:A22,{"A","C"},C2:C22))
5、客户A和C的1月份销售额合计
=SUM(SUMIFS(C2:C22,A2:A22,{"A","C"},B2:B22,1))
可替换公式:
=SUMPRODUCT(C2:C22*(A2:A22={"A","C"})*(B2:B22=1))
6、客户A的1月份和客户C的3月份销售额合计
=SUM(SUMIFS(C2:C22,A2:A22,{"A","C"},B2:B22,{1,3}))
可替换公式:
=SUMPRODUCT(C2:C22*(A2:A22={"A","C"})*(B2:B22={1,3}))
7、客户A和客户C的1月份和3月份销售额合计
=SUM(SUMIFS(C2:C22,A2:A22,{"A","C"},B2:B22,{1;3}))
*注意此公式7和公式6的差异仅为{1,3}和{1;3}中间的符号。
可替换公式:
=SUMPRODUCT(C2:C22*(A2:A22="A")*(B2:B22={1,3}))+SUMPRODUCT(C2:C22*(A2:A22="C")*(B2:B22={1,3}))
8、客户A和客户C的1月份\3月份\4月份销售额合计
=SUM(SUMIFS(C2:C22,A2:A22,{"A","C"},B2:B22,{1;3;4}))
可替换公式:
=SUMPRODUCT(C2:C22*(A2:A22="A")*(B2:B22={1,3,4}))+SUMPRODUCT(C2:C22*(A2:A22="C")*(B2:B22={1,3,4}))
9、客户A\B\C的1月份\3月份\4月份销售额合计
=SUM(SUMIFS(C2:C22,A2:A22,{"A","B","C"},B2:B22,{1;3;4}))
替代公式:
=SUMPRODUCT(C2:C22*(A2:A22="A")*(B2:B22={1,3,4}))+SUMPRODUCT(C2:C22*(A2:A22="B")*(B2:B22={1,3,4}))+SUMPRODUCT(C2:C22*(A2:A22="C")*(B2:B22={1,3,4}))
如果再次增多就可以看到SUMIFS的优势了。
大家可以看到,SUMIFS在7和8的情况下,字符明显减少。(当然上面的情况好些还能用MMULT完成,但感觉SUMIFS更加简洁易懂)
大家一起来探讨一下,这个新函数的还有什么新特性。。。。。
10、客户A的数量
=COUNTIFS(A2:A22,"A")
替代公式:
=SUMPRODUCT(--(A2:A22="A"))
=COUNTIF(A2:A22,"A")
11、客户A和B的数量
=SUM(COUNTIFS(A2:A22,{"A","B"}))
替代公式:
=SUMPRODUCT(--(A2:A22={"A","B"}))
=SUM(COUNTIF(A2:A22,{"A","B"}))
12、客户A和B的1月份数量
=SUM(COUNTIFS(A2:A22,{"A","B"},B2:B22,1))
替代公式:
=SUMPRODUCT((A2:A22={"A","B"})*(B2:B22=1))
13、客户A和B的1\3月份数量
=SUM(COUNTIFS(A2:A22,{"A","B"},B2:B22,{1;3}))
替代公式:
=SUMPRODUCT((A2:A22={"A","B"})*(B2:B22=1))+SUMPRODUCT((A2:A22={"A","B"})*(B2:B22=3))
*如果条件更多,COUNTIFS的优势就显现出来了。
14、客户A的1月份和客户B的3月份数量
=SUM(COUNTIFS(A2:A22,{"A","B"},B2:B22,{1,3}))
替代公式:
=SUMPRODUCT((A2:A22={"A","B"})*(B2:B22={1,3}))
15、客户和月份的不重复个数
=SUMPRODUCT(1/COUNTIFS(A2:A22,A2:A22,B2:B22,B2:B22))
替代公式:
=SUMPRODUCT(--(MATCH(A2:A22&B2:B22,A2:A22&B2:B22,)=ROW(A2:A22)-1))
=SUMPRODUCT(1/COUNTIF(D2:D22,D2:D22))      (D列为辅助列)
*感觉这个是今天最有收获的公式。这个公式可以适用3列、4列到更多列。。。。。

  如果想在Excel 2007中创建一个工具栏,应注意下面的一些限制:

  (1)不能够自由浮动;

  (2)总是显示在加载项选项卡自定义工具栏组中;

  (3)Excel会忽略一些CommandBar的属性和方法;

  创建工具栏的代码:

  这里的代码假定有一个带有两个名为Macro1和Macro2宏的工作簿,并且在该工作簿打开时创建这个工具栏,在关闭该工作簿时删除这个工具栏。

  注意,与Ribbon定制不同,不管当前是哪个工作簿,自定义工具栏者是可见的。

  在ThisWorkbook代码模块中,输入下面的过程。第一个过程为在打开工作簿时调用创建工具栏的过程,第二个过程为在关闭工作簿时调用删除工具栏的过程。

  PRivate Sub Workbook_Open()
  Call CreateToolbar
  End SubPrivate
  Sub Workbook_BeforeClose(Cancel As Boolean)
  Call DeleteToolbar
  End Sub 过程CreateToolbar的代码如下:
  Const TOOLBARNAME As String = "我的工具栏"
  Sub CreateToolbar()
  Dim TBar As CommandBar
  Dim Btn As CommandBarButton
  '如果存在则删除已存在的工具栏
  On Error Resume Next
  CommandBars(TOOLBARNAME).Delete
  On Error GoTo 0
  '创建工具栏
  Set TBar = CommandBars.Add
  With TBar
  .Name = TOOLBARNAME
  .Visible = True
  End With
  '添加按钮
  Set Btn = TBar.Controls.Add(Type:=msoControlButton)
  With Btn
  .FaceId = 300
  .
  .Caption = "这里是Macro1的提示"
  End With
  '添加另一个按钮
  Set Btn = TBar.Controls.Add(Type:=msoControlButton)
  With Btn
  .FaceId = 25
  .
  .Caption = "这里是Macro2的提示"
  End With
  End Sub


  代码中使用了一个模块级的常量TOOLBARNAME,用来存储工具栏的名称,并用于这两个过程中。

  如果已存在具有相同名字的工具栏,则该过程先删除该工具栏。这样将会避免企图创建与已存在的工具栏有相同名称的工具栏时,产生错误。

  通过使用CommandBars对象的Add方法来创建该工具栏,使用Controls对象的Add方法来添加两个按钮,每个按钮都有三个属性:

  FaceID:确定显示在按钮中的图像的数字。

  OnAction:在单击按钮时执行的宏。

  Caption:鼠标指针悬浮在按钮上时显示的屏幕提示。

  技巧:不仅可以设置FaceID属性,还可以设置Picture属性,使用任何的imageMso图像。例如,下面的语句晶粒示一个绿色的勾号:        PLAIN TEXT
  Visual Basic:
  .Picture = application.CommandBars.GetImageMso _
  ("AcceptInvitation", 16, 16)
  关于imageMso图像的更多信息,请参见“定制RibbonX”。

  在关闭工作簿时,触发Workbook_BeforeClose事件过程,调用过程DeleteToolbar:   Sub DeleteToolbar()
  On Error Resume Next
  CommandBars(TOOLBARNAME).Delete
  On Error GoTo 0
  End Sub

分享到:
相关文章
上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2015-04-20 00:00:00
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/1279460/
本文WWW.DOC100.NET DOC100.NET版权所有。