找回密码
 立即注册

QQ登录

只需一步,快速开始

ws123

注册会员

3

主题

12

帖子

33

积分

注册会员

积分
33
最新发帖
ws123
注册会员   /  发表于:2024-7-25 19:40  /   查看:1047  /  回复:3
本帖最后由 Joestar.Xu 于 2024-7-26 10:23 编辑

sheet.addCustomName(`customName${i}`, `=B2:B13,0,N2:N13`);

sheet.setFormula(
          this.tableData.length - 1,
          i,
          // `=SUM(customName${i})`
          // `=SUMIF(B2:B13,0,N2:N13)`
          `=SUMIF(customName${i})`
        );
报错无效的公式,SUMIF公式怎么处理



3 个回复

倒序浏览
eat_grape_5
高级会员   /  发表于:2024-7-26 08:47:41
沙发
本帖最后由 eat_grape_5 于 2024-7-26 10:58 编辑

貌似楼主定义的公式无效,楼主想要实现一个怎样的计算任务?
可以参考API文档了解如何通过addCustomName接口设置自定义函数:https://demo.grapecity.com.cn/spreadjs/help/api/classes/GC.Spread.Sheets.Worksheet#addcustomname
回复 使用道具 举报
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2024-7-26 14:25:00
板凳
您对addCustomName的理解有些地方是不正确的

打开楼上提供的地址可以看到下图所示,该方法专递的第二个参数是一个公式

而您传递的“=B2:B13,0,N2:N13”并不是一个符合公式语法的表达式,您只是把sumif中间的参数扔进去了而已,而sumif中不是只有一个参数而是有多个参数,多个参数之间是用逗号分隔的,简单理解每一个逗号之间其实是一个符合公式语法的表达式,但是整体放到一起就不是一个公式了。
image.png784102172.png
如下图所示,Excel中不会认为这个是一个正确的表达式
image.png823227233.png

解决方案:
针对上述情况您可以分开设置三个customerName,每个分别代表一个参数,然后
=SUMIF(para1,para2,para3) 这么设置是可行的。
回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2024-8-29 13:55:17
地板
您好,由于本帖较长时间没有回复,本帖先做结贴处理了,后续如您有其他问题,欢迎您开新帖提问。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部