ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

合同台账如何用Excel实现自动统计与到期提醒?

合同台账如何用Excel实现自动统计与到期提醒? 做合同管理的人基本都经历过这种状态合同签完往文件夹一放等到要查哪份合同到期、哪个客户还剩多少尾款、这个月要回多少款才发现要翻半天原始文件甚至要问遍业务、财务、法务三个部门才能拼出完整信息。更麻烦的是合同一多光靠脑子记根本不现实。很多人第一反应是把合同信息录进 Excel但录着录着就会发现如果只是把表格当成“电子版登记簿”那它和纸本文件没有本质区别。台账的价值不在于“把合同录进去了”而在于它能不能在你想知道某个答案时用几秒钟给你结果能不能在合同到期前提醒你能不能在老板问“今年和某某公司总共签了多少合同”时你不需要再拿计算器。这篇文章想跟你梳理的不是怎么做一个花哨的表而是一套可以持续用下去的合同台账方案。从字段设计开始到 Excel 公式、条件格式、数据验证、透视表再到多人协作和后续升级路径最后落到常见问题和最佳实践。整条链路跑通之后你会发现把合同形成台账这件事确实比想象中简单。1. 先想清楚合同台账到底要解决什么问题在你动手打开 Excel 新建工作表之前先回答一个问题这个台账是给谁用的用来回答什么很多合同台账做失败不是因为 Excel 用得不熟而是因为一开始就没想清楚需求。有的团队把合同文本里的每一个条款都列成字段表格宽到要横向滚动三屏有的团队只记了合同名称和金额等到了要续约的时候才知道没有到期时间。这两种情况的本质都是台账字段没有围绕“你要用台账做什么”来设计。合同台账在不同团队里承担的角色不一样对业务人员来说它要能回答“我跟这个客户签过什么、还有哪些在履行”。对财务人员来说它要能回答“这个月要收多少钱、付多少钱、还有多少发票没开”。对法务或合同管理员来说它要能回答“哪些合同快到期了、哪些合同状态异常”。对管理层来说它要能回答“某个周期的签约金额是多少、和哪类供应商合作最多”。所以一个值得长期维护的合同台账至少应该具备三种能力可查询按合同编号、对方单位、合同名称能在几秒内定位到一条完整记录。可统计按签约年份、部门、合同类型、状态进行金额和数量的汇总。可预警合同快到期、付款节点临近、质保期临近时台账能主动提示而不是等出事了才发现。如果你的台账只是把 Word 里的合同编号、合同名称、签合同日期誊了一遍那它大概率还是会变成一份“沉睡文件”。判断一个台账合不合格最简单的测试方法是拿一个真实问题问它。比如“下个月有哪些合同要续签”如果台账不能直接给你答案要么是字段不够要么是表格设计有问题。2. 台账字段设计这是最关键的环节字段设计决定了台账能用多久。字段太少信息不够后面想统计的时候没数据字段太多录一条合同要花五分钟没人愿意维护。平衡的原则是只录会被人反复查询、统计、判断的信息不录躺在合同文本里没人会再问的内容。一个标准的合同台账我建议至少包含以下几组字段。2.1 基础识别字段这是“看到一行记录就知道是哪个合同”的最小集合字段示例为什么需要合同编号HT-2025-001全流程唯一标识也是 Excel 查表的索引合同名称XX项目采购合同业务侧最常用的检索词合同类型采购、销售、租赁、服务统计分类用签约部门/经办人采购部/张三责任到人对方单位XX科技有限公司商务往来主体这里特别要说的是合同编号。合同编号是整个台账的“主键”它的规则最好一开始就定下来后面尽量避免改动。推荐格式是“合同类型缩写-年份-流水号”比如 HT-2025-001 或 CG-2025-012。合同编号一旦录入不要重复不要中间删行否则后续用 VLOOKUP 或 XLOOKUP 引用时会出现混乱。2.2 履约状态字段这是台账能不能“活”起来的关键也是最容易被忽略的字段。字段示例说明签订日期2025-03-01合同生效依据合同开始日期2025-03-10履约起始日合同结束日期2026-03-09到期预警的核心依赖合同状态进行中 / 已到期 / 已终止 / 已完成状态机固定取值备注已续签补充协议见HT-2025-018记录异常情况如果只让选一个最重要的字段那就是“合同结束日期”。很多团队的台账漏掉这个字段导致整个到期预警体系根本建立不起来。建议把合同结束日期单独一列不要和签订日期混用。2.3 财务相关字段财务字段服务于收款、付款、发票和结算。字段示例说明合同含税总金额120000.00以元为单位统一两位小数币种人民币涉外合同必填已收/已付金额90000.00分批收付款时更新未收/未付金额30000.00可用公式自动计算发票情况已开票 / 未开票 / 部分开票财务对账使用财务字段要注意一个细节金额列不要使用文本格式不要写“12万”、“约10万元”这类表达否则后面用 SUMIFS 统计时全是坑。金额统一存成数字单位统一为“元”。2.4 归档关联字段合同台账的最后一组字段是把“台账表”和“合同原文文件”串联起来。字段示例说明合同原件编号HT-2025-001-原件纸版合同归档编号电子版路径2025/采购合同/HT-2025-001.pdf建议用相对路径方便迁移链接超链接指向共享文件夹点开直达合同文件是否归档是/否定期检查归档完整性把电子版路径和链接带上是很多成熟合同台账的必要设计。单有台账没有原文查询时还是要翻文件夹效率上会打折扣。这些字段全部加起来大概 20 列左右已经足够覆盖大多数中小企业的需求。真正决定台账好不好的是你有没有把字段含义、填写规范写清楚让新接手的人也能照着录。这一步值得我们专门用一节来讲。3. 数据规范先立规矩再谈自动化Excel 公式和数据透视表本身不难难的是数据不规范导致计算结果出错。合同台账是多人协作还是单人维护都会遇到同一个问题每个人对“同样的含义”有不同的填法。所以数据规范必须在前自动化在后。3.1 日期字段统一格式日期是最容易出问题的字段。常见错误包括填写“2025/3/1”结果被 Excel 识别成日期填“2025.3.1”被识别成文本填“2025年3月1日”后续日期函数运算基本失效。统一规则是所有日期列使用 Excel 标准日期格式YYYY-MM-DD录入时直接输入 2025-03-01。不要在一个单元格里再把日期和时间混在一起写比如“2025-03-01 10:30”对合同台账没有必要。日期字段是用来参与日期运算的必须保证 Excel 能识别它是日期值而不是一串文本。3.2 金额字段统一为数值金额列建议设置单元格格式为“数字 → 数值 → 小数位数 2 位”并使用千位分隔符。不要写“¥120,000”不要写“120000元”更不要写“12W”。这些字符会影响求和公式和透视表统计。如果一定要在展示时显示“元”可以只在表头注明“单位元”。3.3 状态字段使用固定取值“合同状态”这类字段应该像代码里的枚举一样只允许有限几个值。推荐使用登记中、进行中、已完成、已到期、已终止、已作废不要出现“结束了”“执行完”“还没签完”“差不多完成”这类口语化表达。如果团队经常填错可以用 Excel 的“数据验证”功能强制做下拉选择这个后面会讲到。3.4 填写规则落在备注或说明页建议在台账文件里单独建一个“说明”工作表把每个字段的填写规范写清楚。这样即使换了维护人下一个接手的人也能依照说明继续维护。这个小习惯比在群里口头约定要可靠得多。4. 用 Excel 函数让台账“活”起来字段和数据规范做好之后就可以把纯登记表升级成可查询、可统计、可预警的工具。这一节用几个最常用的函数场景来说明。这里有一个前提说明下面的公式在近几年的 Excel 和 WPS 表格中均可使用。XLOOKUP 需要较新的版本如果版本较旧可以改用 VLOOKUP我会同时给出替代方案。4.1 用合同编号查询合同信息实际工作中你经常需要在一个“查询表”里输入合同编号然后自动带出对方单位、金额、状态。这本质上就是一次查表操作。假设“台账”工作表存放全量合同数据A 列是合同编号B 列是合同名称C 列是对方单位D 列是合同金额。“查询”工作表的 B2 单元格由用户输入合同编号。在查询表中用 XLOOKUP 自动返回信息XLOOKUP($B$2, 台账!$A:$A, 台账!$C:$C, 未找到)如果 Excel 版本比较旧用 VLOOKUPVLOOKUP($B$2, 台账!$A:$D, 3, FALSE)这里3表示返回台账第 3 列对方单位FALSE表示精确匹配。VLOOKUP 的关键限制是查找值必须位于区域的第一列所以台账的 A 列必须是合同编号否则会查不到。4.2 自动计算剩余天数与到期状态这是合同台账最重要的一个自动化场景。在台账中新增两列F 列合同结束日期G 列剩余天数H 列到期状态G 列公式IF($F2, , $F2-TODAY())H 列公式IF($F2, , IF($F2TODAY(), 已到期, IF($F2-TODAY()30, 30天内到期, IF($F2-TODAY()90, 90天内到期, 正常))))这个公式的逻辑是先判断合同结束日期是否为空为空则返回空避免对空白行产生干扰然后用 TODAY() 动态计算剩余天数再按 90 天、30 天、已到期三个层级做状态分级。这样每天早上打开台账H 列会直接告诉你哪些合同需要关注完全不需要手动改状态。4.3 用 COUNTIFS 和 SUMIFS 做统计当领导问“这个季度新签了多少合同”“正在履行的合同金额一共多少”时可以用 COUNTIFS 和 SUMIFS 快速得到答案。统计“进行中”合同数量COUNTIFS(E:E, 进行中)统计“进行中”且合同开始日期在 2025 年内的合同总金额SUMIFS(D:D, E:E, 进行中, B:B, DATE(2025,1,1), B:B, DATE(2025,12,31))如果觉得公式太长不好记更推荐的做法是先给数据区域创建一个“超级表”快捷键 CtrlT然后字段引用会自动变成结构化引用公式可读性会好很多。不过无论用哪种形式核心思想是一样的让 Excel 替你数数而不是你人工去筛。4.4 用条件格式做视觉预警函数计算的“30天内到期”是文字提示还不够直观。你可以用条件格式把快到期的合同整行标成黄色已到期的标成红色。操作步骤选中有数据的区域比如 A1:I100。点击“开始”选项卡 → “条件格式” → “新建规则”。选择“使用公式确定要设置格式的单元格”。输入公式注意这里的锁列写法$H2 让行随行变化列固定为 H$H230天内到期设置格式为黄色填充。再添加一条规则$H2已到期设置为红色填充。这样每次打开文件哪些合同需要续约、哪些合同已经明显过期一眼就能扫出来。条件格式做的是“视觉层”的预警而 4.2 节里的状态列做的是“数据层”的计算两者搭配使用。5. 用数据验证和透视表提高录入效率合同台账能不能长期用下去很大程度取决于“录入一条合同要多久、会不会老出错”。这一节说两个最实用的工具数据验证和透视表。5.1 数据验证让下拉菜单代替手打团队里不同人录入“合同状态”和“合同类型”时很容易出现同义不同词的情况比如有人写“进行中”有人写“执行中”有人写“在办”。这种不统一会让后续所有 COUNTIF 统计全部失真。避免方法就是用数据验证强制下拉选择。操作步骤选中“合同状态”列的数据区域。点击“数据”选项卡 → “数据验证”WPS 中叫“有效性”→“数据验证”。允许条件选择“序列”。来源输入登记中,进行中,已完成,已到期,已终止,已作废点击确定。以后这一列就只能从下拉列表中选择不可能再录入自由文本。同理“币种”“合同类型”“是否归档”这类枚举字段都可以用这种方式来处理。如果想进一步提高体验也可以把下拉选项放在一个独立的“基础配置”工作表里再用“序列-来源”引用对应的单元格区域。这样做的好处是以后要增加或删除某个状态只需要修改基础配置表不用去动数据验证设置。5.2 透视表三分钟生成合同统计报表数据透视表是合同台账统计场景里最实用的工具。它的好处是不需要写公式字段拖拽就能出结果。比如你要按“合同类型”统计各类型的合同数量和合同总金额选中台账数据区域包含字段名。点击“插入”→“数据透视表”。把“合同类型”拖到“行”。把“合同名称”拖到“值”汇总方式选“计数”。把“合同含税总金额”拖到“值”汇总方式选“求和”。几秒钟就能得到一张分组汇总表。再结合切片器还可以快速筛选年份、部门。这里要提醒一个很常见的问题透视表要求数据区域是标准的一维表也就是每一列是一个字段每一行是一条完整记录。如果你把合同台账做成了两行合并单元格或者“一行一个合同的五个阶段”这种非标准结构透视表会很难用。这也是为什么前面反复强调字段设计要规范。5.3 超级表让新增数据自动进入统计范围如果直接把透视表建立在普通区域上等你往后面继续录入新合同时透视表的范围不会自动扩展。解决办法有两个在创建透视表前把数据区域转换为“表格”快捷键 CtrlT。把透视表的数据源范围写大一些比如从台账!$A$1:$I$5000改成更大的区域。第二种方式最简单但也容易把空白行统计进计数结果所以更推荐使用超级表。超级表的好处是当你新增一行时公式和格式自动扩展透视表的数据源也会自动识别新数据前提是你创建透视表时直接选择该表作为数据源。6. 进阶把台账从“Excel 文件”变成“小系统”当合同数量达到几百份或者同时有多个部门要查看台账时单机 Excel 文件就会暴露一些问题版本总是在微信里传来传去不知道哪个是最新的多人同时编辑容易冲突外勤人员想看台账不方便文件放到共享盘又担心下载后被人改坏。这时候有几种进阶方案按成本和协作复杂度从低到高排列。6.1 在线协作文档现在的 WPS、Microsoft 365 都支持在线协作文档。把合同台账放到云端共享给团队成员大家同时在线编辑会自动保留版本历史。这能解决“传文件”和“多人冲突”两个最基础的问题。使用在线版本时要注意明确一个“台账管理员”只有他有结构修改权限其他成员只有内容编辑权限。避免多人同时改同一行可在规范里约定每份合同由经办人录入其他人如需修改先联系经办人。公式、条件格式、数据验证在在线版本中基本都能正常使用但稍微复杂的 VBA 宏可能不支持需要在方案选择时考虑清楚。6.2 用 VBA 实现一键提醒如果团队使用的是本地 Excel并且希望在打开文件时自动弹出窗口提示“30 天内到期的合同有哪些”可以通过 VBA 实现。在 Excel 中按 AltF11 打开 VBA 编辑器双击左侧的“ThisWorkbook”粘贴下面的代码Private Sub Workbook_Open() Dim ws As Worksheet Dim lastRow As Long Dim i As Long Dim msg As String Dim endDate As Date Dim sh As Worksheet On Error Resume Next Set sh ThisWorkbook.Worksheets(台账) If sh Is Nothing Then Exit Sub On Error GoTo 0 lastRow sh.Cells(sh.Rows.Count, F).End(xlUp).Row msg For i 2 To lastRow If sh.Cells(i, F).Value Then If IsDate(sh.Cells(i, F).Value) Then endDate CDate(sh.Cells(i, F).Value) If endDate - Date 30 And endDate Date Then msg msg sh.Cells(i, A).Value - sh.Cells(i, B).Value vbCrLf End If End If End If Next i If msg Then MsgBox 以下合同即将在30天内到期 vbCrLf vbCrLf msg, vbExclamation, 合同到期提醒 End If End Sub这段代码的逻辑是每次打开工作簿时扫描“台账”工作表的 F 列合同结束日期找出距离当前日期 0 到 30 天内的合同然后弹出提示窗口。注意两点第一VBA 属于 Microsoft 宏功能在 WPS 中可能不完整支持不同公司的安全策略也会默认禁用宏第二如果公司对 Excel 宏有安全限制使用前要征求 IT 部门同意并检查宏来源。生产环境建议用更正规的方法比如企业微信/钉钉的机器人提醒或者自动化脚本而不是依赖个人 Excel 宏。6.3 用自动化脚本或低代码平台当台账需要和设备巡检、订单系统、OA 审批流等外部系统打通时Excel 会被演进为“数据库 低代码应用”的组合。常见路径有用多维表格比如飞书多维表格、腾讯文档智能表建合同台账同时配置自动化提醒和权限把合同台账数据导入数据库比如 MySQL用 Python 脚本定时扫描合同结束日期通过企业 Webhook 发送到期提醒在低代码平台上搭建合同审批、台账登记、到期预警的一体化流程。对大多数团队来说不建议一上来就上系统。更合理的演进路线是先用 Excel/WPS 把台账跑起来确认字段和流程没问题当协作需求增长后再平滑迁移到在线表格之后再根据业务需要决定是否引入数据库和自动化平台。7. 常见问题与排查思路合同台账在实际维护中会遇到一些很典型的问题。下面列几个发生频率最高的以及对应的排查思路。问题现象可能原因排查方式解决方案日期列变成一长串数字比如 45200单元格是文本格式录入的日期被 Excel 当成了别的值选中单元格查看格式是否为日期将单元格格式设为“日期”重新录入VLOOKUP 查不到数据合同编号前后有空格或查找值不在区域首列用 LEN 和 TRIM 检查单元格使用 TRIM 清理确保合同编号在第一列求和结果不对金额列里有文本型数字或者混入了单位字符选中金额列查看是否有左上角绿色三角提示统一改为数值格式去掉“元”等字符状态统计为 0状态列里有人录入了意料之外的值用“筛选”查看状态列所有取值使用数据验证下拉限制取值新录入合同没进入统计公式或透视表范围没有包含新行检查公式引用区域和透视表数据源转换为超级表或调整引用范围条件格式不生效公式中的引用位置写错锁列符号不对检查条件格式规则中的公式确认使用类似$H2已到期的写法打开文件提示外部链接丢失台账里引用了其他 Excel 文件查看“数据”菜单的外部连接解除外部链接把数据复制到当前表遇到问题时最有效的排查顺序是先看数据本身是否规范再看公式引用的区域是否正确最后才考虑是不是软件版本问题。绝大多数台账问题根源都是“脏数据”而不是公式或功能有 bug。8. 最佳实践与工程建议如果前面几节是在搭工具这一节就是在说“怎么让工具长期被使用”。8.1 从一开始就定好字段和规范字段规范最好在录入第一个合同之前就定好不要一边录一边加列。中途加列容易导致已有数据回溯填充困难也会让看表的人不知道新列什么时候开始有值。如果确实需要增加字段建议在“说明”工作表里同步更新填写规范。8.2 台账管理员制度合同台账最好有一个明确的负责人。这个人的职责是审核合同编号是否重复、检查新增记录是否完整、定期备份、维护状态字段和数据验证规则。没有负责人台账的最后更新时间会越来越靠前直到没人维护。8.3 定期备份本地 Excel 文件要定期备份到共享盘或网盘。如果是多人协作的在线文档也要开启版本历史管理。合同台账属于企业关键信息建议至少保留双份备份一份在内部共享空间一份在异地的云端存储。8.4 合同原文和台账同步归档每录入一条台账记录最好同步把合同电子版文件放进统一的文件夹路径填到台账的“电子版路径”字段。文件夹结构按“年份/合同类型”分类例如2025/ 采购合同/ HT-2025-001.pdf HT-2025-002.pdf 销售合同/ HT-2025-003.pdf文件命名规则建议与合同编号一致。这样台账是一级索引文件夹是二级存储通过台账能直接找到文件。8.5 定期检查状态不要只录入不维护合同台账最怕的一个场景是录入时状态写“进行中”然后就再也没人更新两年后合同其实已经履行完台账还显示“进行中”。建议每月固定花十分钟把已完成、已到期、已终止的合同状态刷新一遍。如果团队里有条件可以安排每个合同经办人每季度自查一次自己名下的合同。8.6 用最小方案先跑起来首次建台账不要追求一次到位。最稳妥的做法是先建一个简单的表包含合同编号、合同名称、对方单位、金额、签订日期、结束日期、状态、备注这 8 个字段把近一年的合同录进去跑一个月。跑的过程中你会发现哪些字段真的会用到哪些字段只是“加了从来没人看”再迭代调整。这也是整篇文章最核心的建议合同台账不是一个一次性工程而是一个持续维护的小系统。先让它简单到能被坚持使用再谈自动化。9. 结尾把合同形成台账技术上并不复杂。说到底就是四件事字段想清楚、数据录规范、公式算自动、预警做显眼。剩下的事情比如用 VLOOKUP 还是 XLOOKUP、用 Excel 还是在多维表格里维护都是手段不是目的。如果今天你只需要记住一件事那就记住这一点下次再有人问“某份合同到什么情况了”你应该打开一个文件按两下筛选或者一个快捷键而不是去翻合同原件。这就是台账该有的样子。
返回列表