| name | wps-formula |
| description | 表格公式助手。描述你的计算需求,帮你写出对应的WPS表格公式,
VLOOKUP、SUMIF、IF嵌套都支持,还说明WPS和Excel的兼容差异。
用于帮助用户生成WPS表格公式。当用户提到公式、函数、怎么算时触发。
WPS spreadsheet formula assistant.
|
| license | MIT |
| user-invocable | true |
| argument-hint | [用中文描述你想算什么] |
| allowed-tools | Read, Grep, Glob, Bash, Write, Edit |
| metadata | {"author":"BWKYD","title":"表格公式助手","description_zh":"描述你的计算需求,帮你写出对应的WPS表格公式","tags":["WPS","公式","函数","表格","Excel"],"version":"1.0.3","license":"MIT"} |
WPS 公式专家
用中文描述你想算什么 → 自动生成 WPS 表格公式。
核心原则:生成的公式必须在 WPS 表格中可直接使用。注意 WPS 与 Excel 的函数差异。
When to Use
- 用户不知道该用什么函数
- 用户需要复杂的嵌套公式
- 用户遇到公式错误(#VALUE!, #REF!, #N/A等)
- 用户需要从自然语言描述转换为公式
- 用户问"怎么用公式实现XXX"
When NOT to Use
- 用户需要编写WPS宏脚本 → 使用
wps-jsa-macro
- 用户需要数据清洗(去重/去空)→ 使用
wps-data-clean
- 用户需要创建数据透视表 → 使用
wps-pivot
工作流程
Step 1: 理解需求
确认:
- 数据位置:数据在哪些单元格/列?(如"A列是姓名,B列是销售额")
- 计算目标:想得到什么结果?
- 特殊条件:是否有筛选条件、多条件、跨表引用?
Step 2: 生成公式
输出格式必须包含:
📌 公式:
=YOUR_FORMULA_HERE
📝 说明:
- 逐段解释公式的每个部分
- 指出关键函数的作用
📋 使用方法:
- 在哪个单元格输入
- 是否需要下拉填充
- 注意事项
⚠️ 注意:
- WPS兼容性提醒(如有)
- 常见陷阱
Step 3: 公式调试(如遇到错误)
用户反馈错误时,按此流程排查:
#VALUE! → 数据类型不匹配(文本vs数字),检查是否有空格或隐藏字符
#REF! → 引用的单元格被删除或超出范围
#N/A → 查找函数未找到匹配值,检查查找值是否完全一致
#NAME? → 函数名拼写错误或WPS不支持该函数
#DIV/0! → 除数为零,用IFERROR包裹
#NUM! → 数值参数无效
循环引用 → 公式直接或间接引用了自身所在单元格
WPS 函数速查(按场景分类)
查找匹配(最高频!)
| 场景 | 推荐公式 | 示例 |
|---|
| 精确查找 | VLOOKUP | =VLOOKUP(A2,Sheet2!A:C,3,0) |
| 左向查找 | INDEX+MATCH | =INDEX(A:A,MATCH(D2,C:C,0)) |
| 多条件查找 | INDEX+MATCH嵌套 | =INDEX(D:D,MATCH(1,(A:A=F2)*(B:B=G2),0)) ⚠️需Ctrl+Shift+Enter |
| 模糊匹配 | VLOOKUP通配符 | =VLOOKUP("*"&A2&"*",B:C,2,0) |
| 存在性检查 | COUNTIF | =IF(COUNTIF(B:B,A2)>0,"有","无") |
条件统计
| 场景 | 推荐公式 | 示例 |
|---|
| 单条件求和 | SUMIF | =SUMIF(A:A,"销售部",B:B) |
| 多条件求和 | SUMIFS | =SUMIFS(C:C,A:A,"销售部",B:B,">1000") |
| 单条件计数 | COUNTIF | =COUNTIF(A:A,"合格") |
| 多条件计数 | COUNTIFS | =COUNTIFS(A:A,"男",B:B,">=90") |
| 条件平均 | AVERAGEIF | =AVERAGEIF(A:A,"A班",B:B) |
| 条件最大 | MAXIFS | =MAXIFS(B:B,A:A,"销售部") ⚠️WPS2019+ |
文本处理
| 场景 | 推荐公式 | 示例 |
|---|
| 提取前N字符 | LEFT | =LEFT(A2,3) |
| 提取后N字符 | RIGHT | =RIGHT(A2,4) |
| 提取中间 | MID | =MID(A2,4,8) 从第4位取8个字符 |
| 查找位置 | FIND/SEARCH | =FIND("@",A2) FIND区分大小写 |
| 替换 | SUBSTITUTE | =SUBSTITUTE(A2," ","") 去空格 |
| 合并文本 | CONCATENATE/& | =A2&"-"&B2 |
| 文本转数字 | VALUE | =VALUE(A2) |
| 数字转文本 | TEXT | =TEXT(A2,"0.00") |
| 去首尾空格 | TRIM | =TRIM(A2) |
| 提取中文 | 正则不支持 | 用VBA/JSA替代 |
日期时间
| 场景 | 推荐公式 | 示例 |
|---|
| 今天日期 | TODAY | =TODAY() |
| 两日期间隔 | 直接相减 | =B2-A2 结果为天数 |
| 计算年龄 | DATEDIF | =DATEDIF(A2,TODAY(),"Y") |
| 提取年/月/日 | YEAR/MONTH/DAY | =YEAR(A2) |
| 工作日计算 | NETWORKDAYS | =NETWORKDAYS(A2,B2) |
| 月末日期 | EOMONTH | =EOMONTH(A2,0) 当月末 |
| 日期格式化 | TEXT | =TEXT(A2,"YYYY年M月D日") |
逻辑判断
| 场景 | 推荐公式 | 示例 |
|---|
| 单条件判断 | IF | =IF(A2>=60,"及格","不及格") |
| 多层判断 | IFS或嵌套IF | =IFS(A2>=90,"优",A2>=60,"及格",TRUE,"不及格") |
| 错误处理 | IFERROR | =IFERROR(VLOOKUP(...),"未找到") |
| 多条件与 | AND | =IF(AND(A2>0,B2>0),"有效","无效") |
| 多条件或 | OR | =IF(OR(A2="经理",A2="总监"),"管理层","普通") |
数组公式(Ctrl+Shift+Enter)
⚠️ WPS中数组公式需要按 Ctrl+Shift+Enter 确认,公式两端会显示{}
常用数组公式:
- 多条件查找:=INDEX(D:D,MATCH(1,(A:A=F2)*(B:B=G2),0))
- 条件去重计数:=SUMPRODUCT(1/COUNTIF(A2:A100,A2:A100))
- 多列求和:=SUMPRODUCT((A2:A100="条件")*B2:B100*C2:C100)
WPS 与 Excel 函数差异
| 函数 | Excel | WPS | 说明 |
|---|
XLOOKUP | Excel 365+ | WPS 2021+ | 旧版WPS不支持,用INDEX+MATCH替代 |
MAXIFS/MINIFS | Excel 2019+ | WPS 2019+ | 旧版用MAX(IF())数组公式替代 |
IFS | Excel 2019+ | WPS 2019+ | 旧版用嵌套IF替代 |
CONCAT | Excel 2019+ | WPS 2019+ | 旧版用CONCATENATE |
TEXTJOIN | Excel 2019+ | WPS 2019+ | 旧版无直接替代 |
UNIQUE | Excel 365 | 部分WPS支持 | 建议用高级筛选或JSA宏替代 |
FILTER | Excel 365 | 部分WPS支持 | 建议用高级筛选替代 |
SORT | Excel 365 | 部分WPS支持 | 建议用排序功能替代 |
LET | Excel 365 | 不支持 | 无法使用 |
LAMBDA | Excel 365 | 不支持 | 无法使用 |
安全策略: 默认使用兼容性最好的函数(VLOOKUP而非XLOOKUP),除非用户明确使用新版WPS。
金额大小写转换公式
这是中国财务场景的超高频需求:
=IF(A1<0,"负","")&IF(INT(A1)=0,"零",
TEXT(INT(ABS(A1)),"[DBNum2]")&"元")&
IF(INT(ABS(A1)*10)-INT(ABS(A1))*10=0,
IF(INT(ABS(A1)*100)-INT(ABS(A1)*10)*10=0,"整","零"),
MID("壹贰叁肆伍陆柒捌玖",INT(ABS(A1)*10)-INT(ABS(A1))*10,1)&"角")&
IF(INT(ABS(A1)*100)-INT(ABS(A1)*10)*10=0,"",
MID("壹贰叁肆伍陆柒捌玖",INT(ABS(A1)*100)-INT(ABS(A1)*10)*10,1)&"分")
示例
/wps-formula 我想统计A列中"销售部"对应的B列金额总和
/wps-formula A列是姓名B列是部门C列是销售额,帮我找出每个部门销售额最高的人
/wps-formula 我的VLOOKUP返回#N/A,查找值在A列,数据在Sheet2的A到D列
参考
函数详细分类见 reference/formula-categories.md。
中文排版通用规范见 ../shared/chinese-typesetting.md。