我用VBA写了一个自定义函数:getMonth(),他的返回值是 {"1","2","3","12"},这个值在VBA中定义的是字符串。。。已经确定返回值是没问题的。。。。。现在我在单元格中使用了自定义函数 getMonth() , 写法如下 =SUM(SUMIFS(日记账!E:E,日记账!B:B,getMonth())) 为什么这样的写法求和为0, 但是 =SUM(SUMIFS(日记账!E:E,日记账!B:B,{"1","2","3","12"})) 这样的写法就能有正常的求和值
第1个回答 2019-01-10
方法/步骤
打开Excel2007,切换至“开发工具”选项卡,点击“Visual Basic”按钮进入VBA编程环境。
在VBA环境下,右击“Microsoft Excel对象”,在弹出的菜单中选择“插入”→“模块”。
接着点击“插入”菜单中的“过程”。
在打开的“添加过程”窗口中,输入函数名称,例如“ShowID”,类型设置为“函数”,最后点击“确定”按钮进入编辑状态。
在打开的函数编辑窗口中,输入该函数要实现的功能。例如编辑如图所示的代码:
点击“关闭并返回Microsoft Excel"。
7
在Excel工作表中输入公式“=ShowID()”并按回车键,就可以查看效果啦。
第2个回答 2019-01-10
问题就在于getMonth()你定义的是字符串。而公式=SUM(SUMIFS(日记账!E:E,日记账!B:B,{"1","2","3","12"})) 里的{"1","2","3","12"}是个数组,两者是有区别的。
建议直接用VBA编程代替 公式=SUM(SUMIFS(日记账!E:E,日记账!B:B,{"1","2","3","12"}))。本回答被提问者采纳
建议直接用VBA编程代替 公式=SUM(SUMIFS(日记账!E:E,日记账!B:B,{"1","2","3","12"}))。本回答被提问者采纳