
工作中你有没有这样的体验:表格堆成山,手动计算、查找、重复操作耗尽精力?
下面把我多年实战里最常用的23条Excel公式整理给你,逐条说明用途和写法。
你照着用,能显著提升工作效率,也更容易在团队里被信任。
我们从简单到复杂,按应用场景排列,公式要精确,按需复制粘贴就能用。
1. 多个格式相同的工作表汇总同一列的销售量,在汇总表输入:
=SUM(''!C:C)
这个星号代表除了汇总表以外的所有工作表。WPS表格不支持通配写法,需要写完整区间,比如:
=SUM('1月:7月'!C:C)
2. 系统导出的数字看起来像0(实为文本数字)可在C2用:
=--B2
把公式下拉,把文本转为数值。若不想用辅助列,直接求和可用:
=SUM(C2:C8)
或省一步的写法:
=SUMPRODUCT(--B2:B8)
3. 根据商品名查单价,常用VLOOKUP,不必手工查找:
=VLOOKUP(A2,H:I,2,0)
语法记忆方式:VLOOKUP(查找值, 在哪个区域查找, 返回区域第几列, 精确匹配写0)
4. 统计总金额,当表里已有金额列就用SUM:
=SUM(D2:D5)
如果没有金额列,需要对数量和单价相乘再求和,用SUMPRODUCT:
=SUMPRODUCT(B2:B5,C2:C5)
5. 汇总每种商品的总金额,SUMIF是常见利器:
=SUMIF(B:B,G2,E:E)
语法:SUMIF(条件区域, 条件, 求和区域)
6.按月份统计总金额,SUMIF无法在条件里嵌套MONTH,只能借助SUMPRODUCT:
=SUMPRODUCT((MONTH($A$2:$A$9)=G2)$E$2:$E$9)
如果日期涉及跨年,需要同时判断年份,可以把日期转成年月文本,比如:
=SUMPRODUCT((TEXT($A$2:$A$9,"emm")="2021"&G2)$E$2:$E$9)
7. 把文本转换成0用于后续判断,在C2写:
=N(B2)
N能把非数值文本转换成0,有利于像这样判断成绩:
=IF(N(B2)>=60,"及格","不及格")
8.核对金额时遇到看着一样但判断不等的情况,要注意精度问题。直接比较可能出错:
=IF(D2=E2,"正确","错误")
9.表格显示为整数但实际是9.9的情况,设置单元格格式不会改变数值,需要ROUND四舍五入比较:
=IF(ROUND(D2,0)=E2,"正确","错误")
10.查找重复身份证号,若身份证超过15位字符,COUNTIF的条件要写成B2&"",否则会出错:
=IF(COUNTIF(B:B,B2&"")>1,"重复","")
另外身份证常见处理技巧如下。
11. 性别由身份证第17位判断,奇数男,偶数女:
=IF(MOD(MID(B2,17,1),2),"男","女")
12. 出生日期由身份证提取,7~10位年,11~12位月,13~14位日:
=TEXT(MID(B2,7,8),"0-00-00")
13. 周岁计算:
=DATEDIF(D2,TODAY(),"y")
14. 年龄显示为“X岁Y个月”:
=DATEDIF(D2,TODAY(),"y")&"岁"&DATEDIF(D2,TODAY(),"ym")&"个月"
TODAY也可以换成NOW,结果相同。
15. 分别提取年、月、日:
=YEAR(A2)=MONTH(A2)=DAY(A2)
16. 将日期转为星期几:
=TEXT(A2,"aaaa") 或 =TEXT(A2,"dddd")
17. 筛选时保持动态序号(筛选后仍从1开始),可用:
=SUBTOTAL(3,B$2:B2)1
若不需要适配筛选,简单序号也可直接用:
=ROW(A1)
18.提取不重复的地市并对应区县(数组公式,结束时按Ctrl+Shift+Enter):
在D2输入并下拉:
=INDEX(A:A,SMALL(IF(MATCH($A$2:$A$19,$A$2:$A$19,0)=ROW($2:$19)-1,ROW($2:$19),4^8),ROW(A1)))&""
对应的区县在E2输入并按Ctrl+Shift+Enter下拉和右拉:
=INDEX($B:$B,SMALL(IF($A$2:$A$19=$D2,ROW($2:$19),4^8),COLUMN(A1)))&""
19.根据品名查询所有符合条件的值(数组公式,按Ctrl+Shift+Enter),在G4输入并将G列格式设为日期:
=IFERROR(INDEX(A:A,SMALL(IF($B$2:$B$16=$H$1,ROW($2:$16)),ROW(A1))),"")
20.依次查找满足条件的值(如按顺序列出某项对应的多个姓名),在E2输入并按Ctrl+Shift+Enter下拉:
=IFERROR(INDEX(B:B,SMALL(IF(A$2:A$16=D2,ROW($2:$16)),COUNTIF(D$2:D2,D2))),"")
21.把小写金额转成大写金额(人民币大写,公式较长),在D4输入并下拉:
=IF(C4<0,"无效数值",IF(C4=0,"",IF(C4<1,"",TEXT(INT(C4),"[dbnum2]")&"元")&IF(INT(C410)-INT(C4)10=0,IF(INT(C4)(INT(C4100)-INT(C410)10)=0,"","零"),IF(AND((INT(C4)-INT(C4/10)10)=0,INT(C4)>0),"零"&TEXT(INT(C410)-INT(C4)10,"[dbnum2]")&"角",TEXT(INT(C410)-INT(C4)10,"[dbnum2]")&"角"))&IF((INT(C4100)-INT(C410)10)=0,"整",TEXT(INT(C4100)-INT(C410)10,"[dbnum2]")&"分")))
22.将B列金额按位拆分到后续单元格(适合批量格式化展示),在C2输入并下拉右拉:
=LEFT(RIGHT(TEXT($B2100," ¥000;;"),COLUMNS(F:$P)))
23.从一个由逗号分隔的序号串里逐一查找A列在B列对应的项并合并(适用于Excel2016,数组公式,按Ctrl+Shift+Enter):
=TEXTJOIN(",",1,IFERROR(VLOOKUP(N(IF({1},--TRIM(MID(SUBSTITUTE(D2,",",REPT(" ",50)),{1,2,3,4,5,6,7,8,9}50-49,50)))),A:B,2,0),""))
下面补充两点实战建议,能让你在表格维护上少走弯路,这是很多人容易忽略的地方。第一点是关于数组公式的性能与兼容性问题。很多复杂的提取和匹配用到的都是按Ctrl+Shift+Enter结束的数组公式,它们功能强,但在大表上会拖慢文件、影响响应。遇到这种情况,有两个可行策略:一是把关键步骤拆成中间列做缓存,用普通公式提前计算好供最终公式引用;二是在能用新版函数的时候,优先采用如FILTER、UNIQUE等动态数组函数或用Power Query来做,既更快也更易维护。第二点是关于可读性与长期维护。公式虽然能一次性搞定复杂逻辑,但写得难懂会让团队其他人接手时头疼。建议为常用区域命名,写注释列,必要时把关键逻辑用几行简单公式替代一行超长公式,这样既不牺牲效率,也保证了团队协作的可持续性。
最后我想抛出一个你很可能会遇到又急于解决的问题:当你把这些公式搬到不同版本的Excel或别人的电脑上运行时,如何保证兼容且不出错?实践证明,最稳妥的做法是先确认目标同事或客户的Excel版本和是否启用了宏/插件,然后对关键步骤做两份方案:一份用最通用的函数(兼容早期版本),一份用新版动态数组或Power Query的更简洁方案。遇到性能瓶颈就拆成中间表或引入数据模型。你现在最担心的是哪一类公式在你当前项目里会拖慢进度,或者哪种方法在团队协作时最容易出问题?把具体场景说来,我可以帮你进一步优化成最稳妥的做法。
免责声明:以上配图来自网络专业配资股票,旨在传播实用技能与正能量,如涉及版权或人物侵权请及时联系我们处理。
盛达优配提示:文章来自网络,不代表本站观点。