本站小编为你精心准备了录井砂地比统计VBA批量处理运用参考范文,愿这些范文能点燃您思维的火花,激发您的写作灵感。欢迎深入阅读并收藏。
1引言
在储层参数(如录井砂地比)统计中地质资料量大、分散,常规统计操作重复枯燥、效率低下且容易出错[1~3]。比如,一口录井资料需要按所划分的地层(20层)统计出每一地层里某岩性(砂岩)总厚度所占当层比率,而当一个工区内井数众多(50口井)时,依靠人工摘录汇总统计就显得费时费力。引入计算机技术后,类似Ex-cel的办公软件给地质数据的统计处理带来了极大的便利,但面对日益膨胀的多类型海量数据,这些常规的办公软件明显难以满足需求[1]。一是如果仅靠人工操作逐层挑选、累加求和然后数据汇总的话,工作重复量大,而且随着地层数和井数增加而更显著。二是这些数据统计结果的编排格式与文件保存格式都必需满足后续软件(如Surfer、Petrel等)的输入要求,否则,格式编排转换工作量也会随着文件数目增加而变大。商业软件大多数据库底层不透明,给后期数据快速修改、重新加载和软件二次开发带来了困难[2]。vba批量处理程序能够自动操作Excel,轻松完成大量重复工作,可以批量保存成txt文本格式便于直接导入其它软件。利用VBA语言编写的数据处理程序,可作多井数据批量统计整理,使地质人员更专注于地质研究工作,同时宏程序直接面向Excel,使得数据获得和处理更加方便快捷[2]。本文以分层统计录井砂地比为例,完整阐述VBA批量处理程序。
2统计方法
砂地比是砂岩总厚度与地层厚度的比值,因此统计工作需要从该地层的顶底界内挑出所有的砂岩,计算厚度之和然后再除以此地层厚度。对录井资料,首先需要按地质分层取出所要计算的地层深度段内岩性数据,然后挑出此深度段内分布的砂岩层并累加其厚度求总和,得出此地层内砂岩总厚度,除以地层厚度就得到此地层的砂地比。按地质分层顶底界线可以求出每口井中各地质分层对应深度段内的砂地比值,然后取出各井中分层名相同的砂地比数据就可以用于分析工区内每一地质分层的砂地比平面分布情况[2,4]。
3实现方法与关键步骤
要实现VBA程序自动操作Excel需要做到以下几方面。图1各井分层数据Fig.1Layereddataofeachwell图2各井岩性录井数据Fig.2Mudloggingdataofeachwell1)整理三类原始数据表。三类数据分别为井分层、录井和井坐标数据,共放在三个工作簿中,命名为“各井分层数据.xls”“各井岩性录井数据.xls”和“各井坐标数据.xls”。其中,井分层数据以各井名为电子表格名存放地质分层信息,包括分层名、顶深和底深(图1)。录井数据以各井名为电子表格名存放录井岩性信息,包括顶深、底深和岩性(图2)。井坐标数据则放在一张电子表中并命名为“各井坐标”,数据包括井名、x坐标和y坐标。各张电子表格的第一行为表头,数据都从第二行开始(图3)。2)统计各分层砂地比。首先需要按照井分层信息中分层界线将录井中跨层岩体深度段劈分,然后挑选并计算分层对应深度段内砂岩厚度之和,最后除以层厚度得出砂地比。3)提取各井同名分层信息。提取各井中同名分层信息并保存到以此分层名而建立的电子表格中(图4)。最后,将各层数据表以对应表格名批量另存为txt文档。
4操作方法及源程序
4.1操作方法将三类原始数据表放在同一个文件夹下,打开“各井分层数据.xls”,并打开宏里面的“VisualBasic编辑器”,双击工程窗口中的“ThisWork-book”后在右边代码窗口写入源程序[5~7]。当光标处在第一个程序内时,运行宏即可自动完成批量统计。
4.2源程序源程序由三部分组成,第一个程序为主程序,分别调用后两个子程序,如下:
4.3源程序优缺点分析1)优点。①源程序可以直接用于实际工作,无需操作人员必须会VBA编程基础,其参与运算的井数与地层分层数不受限制,可以自动识别。②能够自动完成劈分跨界岩性深度,挑出特定岩性,累计求取厚度,匹配各井坐标,并且利用数组提高运行速度。③自动筛选出同层异井信息并且批量另存为txt文本,方便导入其它软件。2)缺点。①三类原始数据格式及其命名必须与所要求的一致,否则源程序无法找到对应数据。②程序运行中有几次保存工作簿的操作,影响了程序运行速度,并且随着井数增多速度会随之变慢,甚至井数太多时只有采取分批处理办法。
4.4源程序应用效果分析无论是同传统的手工统计还是常规的办公软件的人工操作相比,本程序方法实现了自动化批量处理,对多步统计工作实现了一次性程序自动高效完成。5结语编写VBA批量处理程序用于井数众多的工区时,效果十分明显,能够大幅提高工作效率,减少人工误差。源程序利用数组存储数据实现循环,大大提高了运行速度。本文以砂地比统计为例进行了方法阐述,源程序中还给出了泥地比、砂岩厚度、泥岩厚度等重要储层参数统计结果。对于不会编写VBA程序的读者,可以按照文中阐述的方法直接应用源程序实现统计操作;对于会编程序的读者还可以对源程序进行修改推广应用到其他类似统计工作中,甚至开发插件。