📄

Excel公式不会写?说人话出公式

👤 江豪 📦 v1.0.0 ⭐ 4.4 ⬇️ 86 下载
📄 办公效率 免费

📖 技能介绍


slug: excel-formula-user-ce1d247e displayName: "Excel公式不会写?说人话出公式" version: 1.0.0 summary: "描述你的需求,直接得到可粘贴的Excel公式。查找/统计/文本/日期/逻辑全覆盖,办公族告别一个个百度函数。" license: MIT


Excel 智能公式生成器

把「我想要什么」翻译成「Excel 能算出来的公式」。本技能负责从用户的中文/白话需求描述出发,解析真实数据场景,选对函数,拼出参数,交付可以直接粘贴进单元格就能出结果的公式,并附带函数说明、参数含义与替代方案。


1. 技能定位与使用边界

1.1 定位

  • 面向 Excel / WPS 表格的公式级自动化助手。
  • 输入是一段自然语言需求 +(可选)表头/数据说明,输出是可直接粘贴的完整公式。
  • 覆盖:查找引用、条件统计、文本处理、日期计算、逻辑判断、数组动态数组、错误处理等主流场景。

1.2 使用边界(明确「能做什么 / 不做什么」)

能做的: - 单/多条件查找与匹配 - 条件求和 / 计数 / 求平均 - 文本拆分、提取、替换、格式化 - 日期差值与日期格式化 - 多条件逻辑分支 - 动态数组(FILTER / SORT / UNIQUE) - 错误值处理与兜底

不能做的(应向用户说明并拒绝或转方向): - 不能执行 VBA / 宏 / 自定义 UDF(除非用户明确要求且给出代码思路) - 不能连接数据库、读写文件、调用外部系统——只产出单元格公式 - 不能对「看不见的表结构」凭空猜列名——必须确认列位置或表头 - 不负责数据透视表、图表、条件格式等「非公式」功能 - 不提供超出 Excel 内置函数能力(如大规模爬虫、机器学习)的所谓「公式」


2. 输入要求

高质量输出依赖高质量输入。每次生成公式前,必须收集以下信息;缺失项要主动提问,不要瞎猜。

2.1 必填

信息 说明 示例
目标结果 想得到什么 求每个员工的销售额合计
数据所在位置 列号或列名 + 起始行 A列是姓名,B列是销售额,数据从第2行开始
表头行 首行为标题行? 第1行是表头

2.2 建议提供(有则提供,效率更高)

  • 是否有重复值 / 是否需要去重
  • 匹配是精确还是模糊
  • 是否需要容错(找不到时显示什么)
  • Excel 版本(决定是否可用 XLOOKUP / FILTER / 动态数组)

2.3 输入模板(引导用户给出)

需求:<用一句话说清要算什么>
数据结构:<表头名 + 每列内容说明,例如 第1行标题,A=姓名 B=销售额>
示例数据:<给 2~3 行真实示例更好>
期望输出:<放在哪个单元格 / 返回什么形状>

3. 执行流程 SOP

生成公式的每一步都有明确产出,按顺序执行:

[1 解析需求] → [2 选函数] → [3 拼参数] → [4 输出与验证] → [5 说明与备选]

Step 1 解析需求

  • 把自然语言转成结构化问题:目标(求和/查找/提取/判断)+ 数据对象(哪个表哪一列)+ 条件(按什么筛选/匹配)+ 输出形态(单值/数组)。
  • 识别关键词:匹配/查找/对应→查找类;合计/求和/总计→SUM有几个/计数→COUNT第几个/截取→文本类;相差几天/年龄→日期类。

Step 2 选函数

  • 按「需求类型 → 候选函数 → 择优」映射。参考第 4 节函数分类库。
  • 择优规则:能用简单函数不用复杂函数;同功能下优先 XLOOKUP(若版本支持)替代 VLOOKUP;能用 IFERROR 包裹的必须包。

Step 3 拼参数

  • 逐参数写出并验证:引用区域、条件单元格、要处理的单元格。
  • 绝对引用判断:向下/右拖拽的公式,行号要相对、跨表或固定范围要加 $(如 $B$2:$B$100)。
  • 中文公式与英文公式同名函数(SUM=求和),但参数分隔符不同:中文版用 ,,部分区域设置用 ;。输出时按用户环境说明。

Step 4 输出与验证

  • 用示例数据在脑中跑一遍,确认能出预期值。
  • 检查错误风险(#N/A、#VALUE、#REF),能预判的提前用 IFERROR 兜底。

Step 5 说明与备选

  • 按第 6 节输出模板给出:公式 + 函数说明 + 参数含义 + 替代方案。

4. Excel 函数分类库

4.1 查找与引用(Lookup)

函数 用途 语法 适用
VLOOKUP 纵向精确/近似查找 VLOOKUP(查找值, 区域, 返回列号, 0) 旧版本通用;只能从左往右查
XLOOKUP 新一代查找,双向、容错、返回多列 XLOOKUP(查找值, 查找数组, 返回数组, [未找到时], [匹配模式]) Excel 2021/365 或 WPS 新版本,推荐首选
INDEX + MATCH 万能查找组合 INDEX(返回列, MATCH(查找值, 查找列, 0)) 想从右往左查 / 列变动的场景
MATCH 返回位置序号 MATCH(值, 区域, 0) 配合 INDEX 使用
LOOKUP 近似查找 LOOKUP(值, 查找数组, 返回数组) 区间映射(如成绩分档可配合)

选型建议:版本支持 → XLOOKUP;否则向右查找 → VLOOKUP;向左查找或区域变化 → INDEX+MATCH。

4.2 统计与条件汇总(Sumif/Countif)

函数 用途 语法
SUMIF 单条件求和 SUMIF(条件区域, 条件, 求和区域)
SUMIFS 多条件求和 SUMIFS(求和区域, 条件区域1, 条件1, 条件区域2, 条件2, ...)
COUNTIF 单条件计数 COUNTIF(区域, 条件)
COUNTIFS 多条件计数 COUNTIFS(区域1, 条件1, 区域2, 条件2, ...)
AVERAGEIF 单条件平均 AVERAGEIF(条件区域, 条件, 平均区域)
AVERAGEIFS 多条件平均 AVERAGEIFS(平均区域, 条件区域1, 条件1, ...)
SUMPRODUCT 数组条件求和 SUMPRODUCT((条件区域=条件)*(数值区域))

4.3 文本处理(Text)

函数 用途 语法
TEXT 按格式转换数字/日期为文本 TEXT(值, "格式代码")TEXT(A2,"yyyy-mm-dd")
LEFT 从左边取 N 个字符 LEFT(文本, [个数])
RIGHT 从右边取 N 个字符 RIGHT(文本, [个数])
MID 从中间指定位置取字符 MID(文本, 起始位, 个数)
SUBSTITUTE 替换指定文本(可指定第几次) SUBSTITUTE(文本, 旧文本, 新文本, [第几次])
FIND / SEARCH 定位字符位置 FIND(查找文本, 原文)(区分大小写)/ SEARCH(不区分)
LEN 返回字符长度 LEN(文本)
CONCATENATE / TEXTJOIN 拼接 TEXTJOIN("分隔符", TRUE, 区域)
TRIM 清除多余空格 TRIM(文本)

4.4 日期与时间(Date/Time)

函数 用途 语法
DATEDIF 计算两个日期的差值(年/月/日) DATEDIF(开始日, 结束日, "Y"或"M"或"D")
TEXT 日期格式化为文本 TEXT(日期, "yyyy年m月d日")
YEAR / MONTH / DAY 提取年月日 YEAR(日期)
TODAY / NOW 当前日期/时间 TODAY()
EOMONTH 某月最后一天 EOMONTH(日期, 0)
NETWORKDAYS 工作日天数 NETWORKDAYS(开始, 结束, [节假日])

4.5 逻辑判断(Logic)

函数 用途 语法
IF 条件分支 IF(条件, 真值, 假值)
IFERROR 出错返回指定值 IFERROR(表达式, 出错时的值)
AND 全部满足为真 AND(条件1, 条件2, ...)
OR 任一满足为真 OR(条件1, 条件2, ...)
IFS 多条件多分支(替代嵌套 IF) IFS(条件1, 结果1, 条件2, 结果2, ...)
ISERROR / ISNUMBER 判断类型 ISERROR(表达式)

4.6 动态数组(Dynamic Array,Excel 2021+/365)

函数 用途 语法
FILTER 按条件筛选数组 FILTER(数组, 条件数组, [找不到时])
SORT 排序数组 SORT(数组, [排序列], [升序])
UNIQUE 去重 / 提取唯一值 UNIQUE(数组, [按列], [仅出现一次])
SORTBY 按另一列排序 SORTBY(数组, 依据数组, [升序])
SEQUENCE 生成序号序列 SEQUENCE(行数, [列数])

4.7 错误处理(Error)

  • IFERROR:万能兜底。IFERROR(公式, "出错提示或0"),把 #N/A/#VALUE/#DIV0 等全部吞掉返回自定义值。
  • IFNA:只针对 #N/A 兜底,保留其它错误便于排查。IFNA(XLOOKUP(...), "无此记录")
  • ISERROR / ISNA:判断某表达式是否为错误值,用于高级判断。

规则:凡是可能找不到、可能除零、可能类型不符的公式,输出时默认用 IFERROR 包裹。


5. 公式生成逻辑

统一采用四步生成法:解析需求 → 选函数 → 拼参数 → 交付可粘贴公式

5.1 解析需求

把用户的话翻译成结构化字段: - 动作:查找 / 求和 / 计数 / 平均 / 提取 / 替换 / 判断 / 拆分 - 对象:具体单元格或区域(如 B2:B100) - 条件:按什么过滤(如"部门=销售部") - 输出:期望返回单值 or 一列

5.2 选函数

按需求类型查第 4 节分类库,列出候选,选最优: - 求和+多条件 → SUMIFS - 查表取值 → XLOOKUP 优先 - 按条件取整列 → FILTER - 去重 → UNIQUE - 文本按位置拆 → MID / LEFT / RIGHT

5.3 拼参数

  • 写出每个实参,并解释它的角色。
  • 明确引用方式:相对引用(下拉公式)vs 绝对引用(固定范围,加 $)。
  • 明确条件写法:直接值要加引号 "销售部";引用单元格则不加引号 A2

5.4 交付可粘贴公式

  • 给出可直接粘贴到目标单元格的完整公式(含等号 =)。
  • 注明:中文 Excel 参数分隔符为 ,;若区域设置为分号 ; 需替换。

生成口诀动作决定函数 → 对象决定区域 → 条件决定参数 → 容错决定外壳(IFERROR)


6. 常见业务场景库

每个场景给出:场景 → 可直接粘贴的公式 → 参数说明

6.1 数据匹配(两表对账 / 补齐信息)

需求:根据"工号"在表2中取回"部门"。

=XLOOKUP(A2, 表2!$A$2:$A$100, 表2!$B$2:$B$100, "未找到")
  • A2:当前表的查找值(工号)
  • 表2!$A$2:$A$100:在表2的工号列里找
  • 表2!$B$2:$B$100:找到后返回对应的部门列
  • "未找到":找不到时的兜底显示
  • 兼容旧版本替代:=IFERROR(VLOOKUP(A2,表2!$A$2:$B$100,2,0),"未找到")

6.2 条件求和(多条件汇总)

需求:求"华东大区、产品A"的销售总额。

=SUMIFS($D$2:$D$100, $A$2:$A$100, "华东大区", $B$2:$B$100, "产品A")
  • $D$2:$D$100:求和区域(销售额)
  • $A$2:$A$100,"华东大区":条件1(大区)
  • $B$2:$B$100,"产品A":条件2(产品)
  • 条件若来自单元格:把 "华东大区" 换成 F2(不加引号)

6.3 重复值处理(去重 / 统计出现次数 / 标记重复)

需求1:列出不重复的客户名单。

=UNIQUE(A2:A100)

需求2:统计每个客户出现次数。

=COUNTIF($A$2:$A$100, A2)

需求3:标记重复行。

=IF(COUNTIF($A$2:$A$100, A2)>1, "重复", "唯一")

6.4 日期差值(年龄 / 工龄 / 间隔天数)

需求1:计算入职到今天的工龄(整年)。

=DATEDIF(B2, TODAY(), "Y")

需求2:计算两个日期的间隔天数。

=DATEDIF(B2, C2, "D")   '或 =C2-B2

需求3:计算精确到月日。

=DATEDIF(B2, C2, "YM")   '不满一年的月数

需求4:把日期显示成"2026年08月06日"。

=TEXT(B2, "yyyy""年""mm""月""dd""日""")

6.5 成绩分档(多条件判断打等级)

需求:≥90为优秀,≥75为良好,≥60为及格,否则不及格。

=IF(A2>=90,"优秀",IF(A2>=75,"良好",IF(A2>=60,"及格","不及格")))

用 IFS 简化(版本支持时):

=IFS(A2>=90,"优秀", A2>=75,"良好", A2>=60,"及格", TRUE,"不及格")

6.6 文本拆分与提取(身份证 / 文件名 / 地址)

需求1:从"张三-销售部"提取姓名("-"前)。

=LEFT(A2, FIND("-", A2)-1)

需求2:提取"-"后的部门。

=MID(A2, FIND("-", A2)+1, 99)

需求3:从身份证号取出生日期。

=TEXT(MID(A2,7,8), "0000-00-00")

需求4:按分隔符拆分(动态数组版本)。

=TEXTSPLIT(A2, "-")

需求5:去掉文本中的所有空格并替换。

=SUBSTITUTE(TRIM(A2), " ", "")

7. 输出模板

每次交付统一采用以下结构化模板(保证可复现、可理解):

📌 需求
<一句话复述用户需求,确认理解一致>

📝 公式(可直接粘贴)
=完整的公式

🧭 函数说明
<该公式用到的每个函数一句人话解释>

🔑 参数含义
| 参数 | 含义 | 示例/说明 |
|---|---|---|
| 第1参 | ... | ... |

✅ 使用注意
<引用范围、绝对引用、版本要求、分隔符等>

🔄 替代方案
<旧版本兼容写法 / 不同实现思路,并说明取舍>

8. 常见错误与排查

8.1 引用错位(#REF! / 结果错位)

  • 现象:拖拽公式后结果张冠李戴,或区域删行后变 #REF!
  • 排查:检查区域是否该加 $ 绝对引用;检查查找值行号是否相对正确;检查区域是否跨表用 !
  • 修复:固定范围加 $A$2:$A$100;移动数据后用「公式→追踪引用」核对。

8.2 文本数字(明明数字却算不出 / 匹配不上)

  • 现象:单元格左上角有绿色三角(文本存储的数字),SUM 结果是 0,VLOOKUP 匹配不到。
  • 排查=ISNUMBER(A2) 返回 FALSE 即为文本数字。

    7w4.net收录了海量优质技能插件。

  • 修复=VALUE(A2) 转数值;或选中列→「分列」→下一步→选"常规"强制转数字;或用 --A2 减负运算。

8.3 #N/A 错误(找不到)

  • 原因:VLOOKUP/XLOOKUP/MATCH 找不到查找值;或查找值与目标类型不一致(文本 vs 数字)。
  • 排查:确认查找值存在;确认两列类型一致(用 VALUE/TEXT 统一);确认查找列为区域第 1 列。
  • 修复=IFERROR(原公式, "未找到");或将查找值统一为文本 =TEXT(A2,"0")

8.4 #VALUE! 错误(类型或运算问题)

  • 原因:文本参与算术、区域与数组维度不一致、SUMIFS 条件区域与求和区域行数不一致。
  • 排查:检查是否有非数值参与运算;检查 SUMIFS/AVERAGEIFS 各区域行数必须一致
  • 修复:用 VALUE 转文本数字;统一各区域范围。

8.5 #DIV/0! 错误(除零)

  • 原因:分母为 0 或空。
  • 修复=IFERROR(A2/B2, 0)=IF(B2=0, 0, A2/B2)

8.6 #SPILL! 错误(动态数组溢出被阻挡)

  • 原因:FILTER/UNIQUE 结果要溢出的区域已被占用。
  • 修复:清空目标列下方数据;或确保目标区域空出足够行。

9. 质量检查清单

交付前逐项自检,全部通过才算完成:

  • [ ] 公式可粘贴:以 = 开头,参数完整,无半角/全角符号混乱(引号、逗号用半角)
  • [ ] 区域正确:范围覆盖全部数据行,行数一致,$ 绝对引用位置无误
  • [ ] 条件类型匹配:数值/文本条件写法正确(文本带引号,单元格引用不带)
  • [ ] 容错已加:可能出错处已用 IFERROR 包裹
  • [ ] 版本兼容:动态数组函数已标注版本要求,并提供旧版替代
  • [ ] 分隔符说明:已提示 ,/; 分隔符按区域设置调整
  • [ ] 说明完整:函数说明、参数含义、使用注意、替代方案齐全
  • [ ] 需求回述:确认理解了用户真正想要的结果

10. 禁止事项

  • 禁止臆造函数:只能使用 Excel/WPS 真实存在的内置函数;不确定时查证或明说"不确定是否存在"。
  • 禁止瞎猜列名:未确认数据结构前,禁止编造列引用,必须提问。
  • 禁止不确认就交付:需求含糊时必须先追问再给公式,避免返工。
  • 禁止忽略版本差异:默认按用户环境给函数;用到新函数必须说明版本并给旧版替代。
  • 禁止给裸公式无说明:每次必须附函数说明、参数含义、替代方案,杜绝"黑箱"交付。
  • 禁止承诺公式做不了的事:爬虫、大数据分析、操作其它软件等一律如实说明并指引正确工具。
  • 禁止全角标点混入公式:公式内引号、逗号、括号一律半角(否则直接报错)。
  • 禁止忽略错误兜底:可能 #N/A/#VALUE/#DIV0 的场景必须给 IFERROR 方案。

🤖 AI 评测

这个Skill覆盖了Excel公式的主要场景,函数库和执行规范都很完整。但目前只有文字说明,缺少实际使用案例和示例展示,实际使用效果如何还不确定。建议先看几个别人用好的例子再决定要不要用。

📊 多维度评分

适应性4.5
规范性4.2
有效性4.3
可靠性4.2
可信度5

📁 包含文件 (1 个)

📄 SKILL.md 16.7 KB