name: xlsx-formula-master displayName: Excel 公式翻译官(人话→公式) slug: xlsx-formula-master version: 1.0.0 author: ikun license: MIT language: zh-CN description: | 你描述需求(人话),它给你 Excel / WPS 公式 + 解释 + 不踩坑的边界条件。 专攻 VLOOKUP / XLOOKUP / INDEX-MATCH / SUMIFS / 数组公式 / 动态数组 / Power Query 等高频但易错场景。 自动适配你的 Excel 版本(2019 / 365 / WPS)——版本不同公式可能不能用。 触发:用户说 "Excel 公式"、"VLOOKUP"、"怎么算"、"WPS 公式"、"求和怎么写"、"匹配数据"、"数据透视"。 keywords: ["Excel 公式", "WPS 公式", "VLOOKUP", "XLOOKUP", "INDEX MATCH", "SUMIFS", "COUNTIFS", "数组公式", "动态数组", "Power Query", "Excel 翻译"]
Excel 用户的两大痛点: 1. 知道想要什么,不知道用哪个公式 —— "我想要 A 列每个值在 B 列出现几次" 不知道是 COUNTIF 2. 公式是 ChatGPT 给的,但用了报错 —— 因为 Excel 版本 / 中英文 / 区域差异
这个 skill 干 3 件事: 1. 翻译:自然语言需求 → 可执行的 Excel / WPS 公式 2. 解释:每个参数是什么意思,为什么这么写 3. 避坑:边界条件(空值 / 错误值 / 大小写 / 文本数字混排),不同版本兼容性
不做的事:不做 VBA 宏(那是 xlsx-vba-zh 的活,本 skill 只覆盖公式);不做数据透视表的可视化设计。
查找匹配类(用得最多)
├─ VLOOKUP(兼容性好,但只能从左往右)
├─ XLOOKUP(2021/365 才有,最强)
├─ INDEX + MATCH(VLOOKUP 不够时的万能替代)
└─ HLOOKUP(横向查找,用得少)
条件聚合类
├─ SUMIF / SUMIFS(按条件求和)
├─ COUNTIF / COUNTIFS(按条件计数)
├─ AVERAGEIF / AVERAGEIFS(按条件平均)
└─ MAXIFS / MINIFS(条件最值,2019+)
文本处理类
├─ LEFT / RIGHT / MID(截取)
├─ FIND / SEARCH(查找位置)
├─ SUBSTITUTE / REPLACE(替换)
├─ TEXTJOIN(连接,2019+)
└─ TEXTSPLIT(拆分,365 才有)
日期时间类
├─ TODAY / NOW(当前)
├─ DATEDIF(日期差,隐藏函数)
├─ EOMONTH / EDATE(月末 / N 月后)
└─ NETWORKDAYS(工作日,要排除节假日)
数组 / 动态数组(365 / 2021+ 才有)
├─ FILTER(条件筛选)
├─ UNIQUE(去重)
├─ SORT / SORTBY(排序)
└─ LET / LAMBDA(自定义命名 / 函数,超强但少有人用)
逻辑判断类
├─ IF / IFS(条件分支)
├─ AND / OR / NOT
├─ IFERROR / IFNA(错误兜底)
└─ SWITCH(多分支)
❌ 错的:=VLOOKUP(A2, D:F, -1, FALSE) --- 左查找 VLOOKUP 不行
✓ 对的:=INDEX(C:C, MATCH(A2, D:D, 0)) --- INDEX+MATCH 万能
✓ 365:=XLOOKUP(A2, D:D, C:C) --- 最简单
❌ 错的:=VLOOKUP(A2, D:F, 2) --- 默认 TRUE 是模糊匹配
✓ 对的:=VLOOKUP(A2, D:F, 2, FALSE)
=VLOOKUP(A2, D:F, 2, 0)
模糊匹配会按 D 列的"接近值"匹配,结果完全错。
现象:SUM 出来是 0,VLOOKUP 找不到。
诊断:=ISTEXT(A2) 看是否返回 TRUE。
修:=VALUE(A2) 或选中列 → 数据 → 分列 → 完成(强制转数字)。
❌ =SUMIFS(B2:B100, A:A, "苹果") --- B 是 99 行,A 是整列,报错
✓ =SUMIFS(B:B, A:A, "苹果") --- 都用整列
✓ =SUMIFS(B2:B100, A2:A100, "苹果") --- 都精确范围
现象:单元格显示日期,但参与计算变成 5 位数字。
修:单元格格式 → 日期。或者公式里包一层 TEXT(A2, "yyyy-mm-dd")。
中文 Excel 默认中文公式名(如 求和 而非 SUM),跨电脑复制会报错。
修:统一用英文公式名(在选项里把"使用 R1C1 引用样式"关掉,公式还是英文)。
"Sheet1 的 A 列是订单号,要从 Sheet2 里把对应的客户名匹配过来"
Excel 2021 / 365:
=XLOOKUP(A2, Sheet2!A:A, Sheet2!B:B, "未找到")
Excel 2019 / WPS:
=IFERROR(VLOOKUP(A2, Sheet2!A:B, 2, 0), "未找到")
"把 A 列是『一般纳税人』且 B 列日期在 2024 年的 C 列金额加起来"
=SUMIFS(C:C, A:A, "一般纳税人",
B:B, ">="&DATE(2024,1,1),
B:B, "<="&DATE(2024,12,31))
单字姓(如 "张三"):
姓=LEFT(A2,1)
名=MID(A2,2,LEN(A2)-1)
复姓(如 "欧阳锋")—— 需先建复姓清单 D:D:
姓=IF(COUNTIF(D:D, LEFT(A2,2))>0, LEFT(A2,2), LEFT(A2,1))
名=MID(A2, LEN(姓)+1, 99)
"A 列有重复的订单号,统计有多少个不重复订单"
Excel 365:
=COUNTA(UNIQUE(A:A))-1 --- 减 1 是去掉表头
Excel 2019 / WPS:
=SUMPRODUCT(1/COUNTIF(A2:A1000, A2:A1000))
"找出 A 列是『北区』且 B 列大于 0 的 C 列最大值"
2019+ 直接:
=MAXIFS(C:C, A:A, "北区", B:B, ">0")
旧版 :
{=MAX(IF((A:A="北区")*(B:B>0), C:C))} --- 数组公式 Ctrl+Shift+Enter
小葱技能7w4.net持续更新中。
=DATEDIF(B2, TODAY(), "Y") & "年" &
DATEDIF(B2, TODAY(), "YM") & "个月"
DATEDIF 是隐藏函数,输入时不会自动提示但能用。
如果用户没说清楚,问: 1. 你用的是 Excel 几版 / WPS?(决定能不能用 XLOOKUP / FILTER 等) 2. 数据大概长什么样?(行数、列、有没有表头、空值情况) 3. 你想要的结果是什么样?(具体例子最好) 4. 这个公式是只算 1 次还是要拖填整列?(影响 $ 锁定方式)
输出 3 部分:
【公式】
=...
【参数解释】
- 参数 1:XX,含义是 XX
- 参数 2:XX,含义是 XX
...
【边界条件】
- 如果 XX 情况会怎样?→ 用 IFERROR 兜底:=IFERROR(原公式, "默认值")
- 如果 XX 数据类型问题 → 用 VALUE / TEXT 转换
- 如果跨版本 → 兼容写法是 XX
【拖填注意】
- 列锁定 / 行锁定($A$1 vs $A1 vs A$1 vs A1)的选择
## 你的需求
(用一句话复述用户的需求,确认理解一致)
## 推荐公式(你的版本:Excel 2019)
=IFERROR(VLOOKUP(A2, Sheet2!A:B, 2, 0), "未找到")
## 怎么用
1. 在 Sheet1 的 C2 输入此公式
2. 双击 C2 右下角小方块,自动拖填到底
3. C 列就是匹配到的客户名
## 参数解释
- A2:要查找的订单号
- Sheet2!A:B:在 Sheet2 的 A-B 列里找
- 2:返回 B 列(匹配区域第 2 列)
- 0:精确匹配(一定要写)
- IFERROR:兜底,找不到时返回"未找到"而不是 #N/A
## 注意事项
- 如果 A2 是数字但显示是文本(左上角有绿三角),先选中列 → 分列 → 完成
- 如果你升级到 365 / 2021,可以换成更简单的 XLOOKUP
## 备选方案(如果上面不行)
(XLOOKUP 写法 + INDEX/MATCH 写法)
不主动写 VBA / 数据透视表 / Power Query(除非用户要求)。
这个 Skill 质量不错,内容实用性强。它把 Excel 公式的各种坑都讲清楚了,还针对不同版本给出兼容写法,非常贴心。高频场景模板和避坑指南对新手特别友好。不过它主要是文字教程,不是直接帮你生成公式的工具,想要直接得到答案可能还需要配合 AI 使用。整体来说是个很实用的 Excel 公式参考资料。