4. Excel表格结构规划

在动手写任何公式或宏之前,先把工作簿的“骨架”定下来,是油田生产日报自动汇总能否长期稳定运行的关键。很多现场表格之所以越用越乱,根本原因不是公式写错,而是四类数据被混在同一张表里:每天变化的产量数据、相对稳定的井档案、人为约定的计算参数、以及面向汇报的汇总结果。本节要做的,就是把这四类内容拆成四张职责清晰的表,并用统一的“井号”把它们串起来。

四张表的职责边界

先明确每张表“管什么、不管什么”,这是后续所有关联设计的前提。

  • 井基础信息表(tbl_Wells):存放不随日报变化的静态档案,如井号、井名、所属区块、井别(采油井/注水井/措施井)、投产日期、当前生产状态。一行一口井,井号是唯一主键,不允许重复。
  • 参数配置表(tbl_Config):存放计算口径与阈值,如含水率分级界限、产量单位换算系数、异常判定阈值、日报统计起始时刻。以“参数名—参数值—说明”三列纵向存放,便于集中修改而不必翻找公式。
  • 日报明细表(tbl_Daily):存放每天每口井的实际数据,如日期、井号、日产液、日产油、日产水、含水率、套压、油压、回压、生产时间。这是数据量最大、增长最快的表,一行代表“某天某口井”。
  • 汇总输出表(tbl_Summary):面向汇报,按区块、井别或全厂汇总日产油、日产液、含水率、开井数等指标,数据全部由公式或透视从明细表引用而来,不手工录入。

四张表的关系可以概括为:基础信息表提供“井是谁”,参数配置表提供“怎么算”,日报明细表提供“今天多少”,汇总输出表回答“整体如何”。下图展示了这一关联结构。

四表关联结构:以“井号”为主键的星型关系 井基础信息表 tbl_Wells 井号(主键) 井名 / 区块 / 井别 投产日期 / 生产状态 一行一口井,不重复 静态档案,随井变动才改 参数配置表 tbl_Config 参数名 / 参数值 / 说明 含水分级界限 单位换算系数 异常判定阈值 纵向存放,集中修改 日报明细表 tbl_Daily 日期 + 井号(联合主键) 日产液 / 日产油 / 日产水 含水率 / 套压 / 油压 / 回压 生产时间 一行 = 某天某口井,持续追加 数据量最大,只录不手算 汇总输出表 tbl_Summary 区块 / 井别 / 全厂 日产油合计 / 日产液合计 综合含水率 / 开井数 全部由公式或透视生成 不手工录入,只做展示 口径来自参数配置表 井号 1:N 关联 按区块/井别聚合 提供计算口径 阈值/系数参与判定 统一主键:井号 四表引用同一编码,禁止别名

主键与关联字段的落地约定

关联能否成立,取决于“井号”是否在四张表中完全一致。实践中建议做三条硬性约定:第一,井号统一为文本格式,避免“0012”被 Excel 自动转成数字 12 而与“0012”匹配失败;第二,井号前后不留空格,录入时用数据验证下拉选择,而不是手工敲;第三,日报明细表采用“日期+井号”联合主键,同一口井同一天只允许一条记录,可用条件格式或 COUNTIFS 做重复校验。

在日报明细表中,井号列通过数据验证引用基础信息表的井号区域,实现“只能选已有井”。这样一旦出现新井,先在基础信息表登记,明细表下拉里才会出现,从源头杜绝“表里有、档案里没有”的孤儿数据。汇总输出表则通过 SUMIFS、COUNTIFS 按区块或井别从明细表取数,区块字段本身来自基础信息表,因此汇总表并不需要重复维护井与区块的对应关系。

一个可直接套用的字段设计示例

以下给出四张表的字段结构示例,参数与数值均为教学假设,实际使用时按本单位报表口径调整。

表名关键字段主键/关联数据来源
tbl_Wells 井号、井名、区块、井别、投产日期、生产状态 井号(主键) 人工维护
tbl_Config 参数名、参数值、说明 参数名(主键) 人工维护
tbl_Daily 日期、井号、日产液、日产油、日产水、含水率、套压、油压、回压、生产时间 日期+井号(联合主键),井号外键指向 tbl_Wells 每日录入/导入
tbl_Summary 统计日期、区块、井别、日产油合计、日产液合计、综合含水率、开井数 统计日期+区块+井别 公式/透视生成

以含水率为例说明参数配置表如何参与计算。假设配置表中“含水率计算方式”取值为“日产水/日产液”,则明细表含水率列写为 =IFERROR(日产水/日产液,""),而不是每行手填。若某天某井日产液为 0(关井),公式返回空值而非报错,汇总时用 SUMIFS 自动跳过。再如“异常判定阈值”设为套压波动超过 0.5 MPa 标记异常,明细表可增加一列“异常标记”,用 =IF(ABS(套压-前一日套压)>阈值,"异常","") 判断,阈值直接引用配置表单元格,日后调整只改一处。

把参数配置表的参数值单元格定义为名称(如“含水界限”“套压阈值”),公式中直接写名称,可读性远高于引用 tbl_Config!$B$5,也便于交接给同事维护。

结构规划中常见的三个坑

第一,把汇总结果写回明细表。有人图省事在明细表底部加“合计”行,结果下次追加数据时合计行被挤到中间,透视和公式全部错位。合计只能出现在汇总输出表。第二,基础信息表里放“当前日产油”。这类会变的量属于明细表,放进档案表会导致历史无法追溯。第三,参数散落在公式里。含水界限、换算系数一旦硬编码进几十个公式,口径调整时几乎无法核对,必须集中到配置表。

完成上述规划后,工作簿就具备了“录一次、算全篇”的基础:明细表只管如实记录,基础信息表只管档案准确,配置表只管口径统一,汇总表只管呈现结果。四张表通过井号这一条主线咬合在一起,后续无论是加透视、写宏还是做图表,都有了稳定的数据底座。