999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于VBA的石油地質(zhì)數(shù)據(jù)處理

2018-10-25 11:06:56陳蜀曹劍利
計算機時代 2018年9期

陳蜀 曹劍利

摘 要: 海量數(shù)據(jù)處理是石油地質(zhì)項目開展過程中的重要工作,若依靠純手工處理工作量巨大。文章提出了基于VBA數(shù)據(jù)批量處理方法,以氣藏數(shù)值模擬工藝改造數(shù)據(jù)的處理為例,在EXCEL中運用VBA進行編程,實現(xiàn)海量射孔數(shù)據(jù)的提取與標(biāo)準(zhǔn)化處理。首先從井史數(shù)據(jù)出發(fā),借助文件對象打開對應(yīng)井單的射孔數(shù)據(jù)文件,然后循環(huán)提取射孔數(shù)據(jù)中的相關(guān)數(shù)據(jù)信息,進行標(biāo)準(zhǔn)化處理后寫入工藝改造數(shù)據(jù)表格中,生成氣藏數(shù)值模擬的基礎(chǔ)數(shù)據(jù)體。針對示范工區(qū)數(shù)據(jù)處理表明,該方法不但極大地提高了氣藏數(shù)值模擬基礎(chǔ)數(shù)據(jù)的整理效率,同時也能克服人工處理因疲勞導(dǎo)致的錯誤,提高了數(shù)據(jù)處理的質(zhì)量。

關(guān)鍵詞: VBA; EXCEL; 海量數(shù)據(jù); 批處理

中圖分類號:TP399 文獻標(biāo)志碼:A 文章編號:1006-8228(2018)09-48-03

Abstract: Massive data processing is often faced in the process of petroleum geological projects, and it is hard by manual process. This paper proposes a data batch processing method via VBA. Taking the data processing of numerical simulation process for gas reservoir as an example, the Excel spreadsheet is used with VBA programming to realize the massive perforation data extraction and standardized processing. Firstly, from well history data, opening the perforation data file of the corresponding well sheet with the help of the file object, then circularly extracting relevant data information from perforation data and writing into the data form of process modification after standardized processing, at last generating the basic data volume for numerical simulation of gas reservoir. Data processing for demonstration area shows that this method not only greatly improves the efficiency of sorting out the basic data of gas reservoir numerical simulation but also overcomes the errors caused by fatigue and improves the quality of data processing.

Key words: VBA; Excel; massive data; batch processing

0 引言

雖然Excel功能強大且提供了豐富的函數(shù)輔助數(shù)據(jù)處理,但仍然不能滿足一些特殊數(shù)據(jù)的處理要求。為了處理一些模型更為復(fù)雜的數(shù)據(jù),我們可以利用Excel自帶的開發(fā)環(huán)境VBA實現(xiàn)數(shù)據(jù)處理在某些方面的特殊要求[1-2]。例如:Dydowicz, P.基于VBA對海量公司數(shù)據(jù)進行了批量格式轉(zhuǎn)換[3]。DJ Zhang利用Excel VBA進行本地奇點分析批量運算[4]。在Excel中,處理少量數(shù)據(jù)的時候可以人工操作處理,當(dāng)數(shù)據(jù)處理需要不斷重復(fù)相同的操作時,可以用Excel中的錄制宏來操作,而當(dāng)我們處理繁瑣并且重復(fù)量很大的數(shù)據(jù)時,VBA的編寫就可以幫助減少大量重復(fù)的工作。VBA屬于面向?qū)ο蟮木幊陶Z言,具有易理解、語法簡單的特點,加之,VBA是針對某個特定程序開發(fā),利用簡單的代碼即可完成復(fù)雜的功能[5-6]。VBA處理數(shù)據(jù)比其他語言處理數(shù)據(jù)需要編寫的代碼量少,簡單易操作,不僅能提高效率節(jié)省時間,還能大大提高數(shù)據(jù)正確率。本文針對VBA在油氣勘探開發(fā)中海量數(shù)據(jù)處理的應(yīng)用開展了研究,運用其實現(xiàn)了高效地數(shù)據(jù)整理與標(biāo)準(zhǔn)化工作。

1 工作流程

基于VBA的海量數(shù)據(jù)批量處理會涉及多個射孔數(shù)據(jù)表與一個井單表,射孔數(shù)據(jù)表存放于一個單獨的射孔數(shù)據(jù)文件夾中,首先通過循環(huán)一個工作簿中“井號”表單中的井名,依次在射孔數(shù)據(jù)文件夾中查找對應(yīng)井號的工作簿,并依次將其打開,然后逐個復(fù)制其中關(guān)鍵信息,粘貼到首次打開的工作簿中的“工藝改造數(shù)據(jù)”表單中指定的位置,經(jīng)過整理,生成氣藏數(shù)值模擬的基礎(chǔ)數(shù)據(jù)體。

2 實現(xiàn)方法

2.1 文件的讀取

2.1.1 使用FSO對象

讀取射孔數(shù)據(jù)文件夾需要創(chuàng)建一個FSO對象,它不僅可以實現(xiàn)文件的創(chuàng)建、改變、移動和刪除,而且可以檢測是否存在指定的文件夾。此外,F(xiàn)SO 對象模型還可以獲取關(guān)于文件和文件夾的信息,如名稱、創(chuàng)建日期或修改日期等以及系統(tǒng)中使用的驅(qū)動器的信息。FileSystemObject是FSO對象模型中最主要對象,它提供了一套完整的可用于創(chuàng)建、刪除文件和文件夾,收集驅(qū)動器、文件夾、文件相關(guān)信息的方法。

創(chuàng)建FSO對象的關(guān)鍵代碼:

Set objFileSystem=CreateObject("Scripting

.FileSystemObject")

2.1.2 獲取文件路徑

每口井的射孔數(shù)據(jù)都存放在同一個文件夾中,而數(shù)據(jù)的處理需要先獲取這個文件夾的路徑。

獲取文件夾路徑的關(guān)鍵代碼:

strPath=ActiveWorkbook.Path+"\射孔數(shù)據(jù)\"

2.2 設(shè)置輸出表頭

工作簿中的“工藝改造數(shù)據(jù)”表中有相應(yīng)的表頭,在指定的位置寫入對應(yīng)的表頭,同時,對存放數(shù)據(jù)的區(qū)域單元格進行格式設(shè)置。

2.2.1 寫入表頭

在該工作簿中的“工藝改造數(shù)據(jù)”表單中寫入表頭,需要用到Excel中的Range對象,它代表Excel中的單元格,可以是單個單元格,也可以是單元格區(qū)域。通過VBA中的Range屬性,依次將表頭數(shù)據(jù)寫入到指定的單元格中。

寫入表頭關(guān)鍵代碼,以A列為例:

Range("A1")="DATE(dd.mm.yyyy)"

2.2.2 設(shè)置格式

利用Columns屬性中的NumberFormatLocal屬性,以用戶語言字符串設(shè)置對象的格式代碼,將指定區(qū)域的單元格格式設(shè)置為文本格式。

設(shè)置格式關(guān)鍵代碼,以A列為例:

Columns("A").NumberFormatLocal="@"

2.3 數(shù)據(jù)批量提取與處理

2.3.1 打開井號對應(yīng)的射孔數(shù)據(jù)

⑴ 計算“井號”表單中井口的數(shù)量,首先定義一個wellCount接收“井號”表單中的井口數(shù)量,Range對象的CurrentRegion屬性可以返回包含指定單元格在內(nèi)的一個連續(xù)的矩形區(qū)域,Rows表示某個區(qū)域中所有行組成的集合,通過Count屬性返回工作簿中所有的工作表數(shù)量。

計算井口數(shù)量關(guān)鍵代碼為:

wellCount=Range("A1").CurrentRegion.Rows.Count-1

⑵ 定義一個wellName獲取井號,通過當(dāng)前活動單元格ActiveCell屬性的Value值,來獲取當(dāng)前單元格的井號。通過Trim函數(shù),移除字符串兩側(cè)的空白字符或其他預(yù)定義字符。

獲取井號關(guān)鍵代碼為:

wellname=Trim(ActiveCell.Value)

⑶ 打開工射孔數(shù)據(jù)文件,即對應(yīng)井號的射孔數(shù)據(jù)。定義wellFile存放射孔數(shù)據(jù)文件路徑,通過OFS對象的fileExists方法判斷射孔數(shù)據(jù)文件是否存在,若存在,則通過Workbooks中的Open事件打開射孔數(shù)據(jù)。

打開射孔數(shù)據(jù)關(guān)鍵代碼為:

wellFile=strPath+wellname+".xlsx"

If objFileSystem.fileExists(wellFile) Then

Application.Workbooks.Open wellFile

⑷ Worksheet對象的UsedRange屬性可以返回工作表中已經(jīng)使用的單元格圍成的矩形區(qū)域,首先計算出“工藝改造數(shù)據(jù)”表單中將“工藝改造數(shù)據(jù)”表中已經(jīng)使用的單元格圍成的矩形區(qū)域的行數(shù),插入“工藝改造數(shù)據(jù)”表并使每個區(qū)域與下一個區(qū)域之間有兩行的距離。通過Range對象的Value屬性為指定的單元格賦值。

以A列為例,關(guān)鍵代碼為:

insertWellIndex=ActiveSheet.UsedRange.Rows.Count+2

myRange="A"+Trim(Str(insertWellIndex))

Range(myRange).Value="WELLNAME"

2.3.2 提取所需射孔數(shù)據(jù)寫入到“工藝改造數(shù)據(jù)”表中的指定位置

⑴ 計通過Range對象中的Count屬性計算工作簿2中的射孔數(shù)據(jù)條數(shù)。

計算射孔數(shù)據(jù)條數(shù)關(guān)鍵代碼為:

n=Range("A1").CurrentRegion.Rows.Count-1

⑵ 通過循環(huán)判斷射孔數(shù)據(jù)的條數(shù)是否大于1,對射孔數(shù)據(jù)進行遍歷,當(dāng)射孔數(shù)據(jù)是1條時,說明只有表頭,故不進行操作,進入下一次循環(huán);當(dāng)射孔數(shù)據(jù)條數(shù)多于1條時,對射孔數(shù)據(jù)中的關(guān)鍵信息進行提取,并寫入到 “工藝改造數(shù)據(jù)”表指定單元格中。寫入其他信息,再提取工作簿1中的“井號”表單日期數(shù)據(jù),處理后寫入“工藝改造數(shù)據(jù)”表中的指定單元格中。

以提取頂深為例,主要代碼為:

myRange="B"+Trim(Str(i+1))

Range(myRange).Select

Selection.Copy

'粘貼到指定單元格

myRange="F"+Trim(Str(insertWellIndex+i))

Range(myRange).Select

ActiveSheet.Paste

⑶ 通過Range對象的Value屬性,在“工藝改造數(shù)據(jù)”表單指定單元格中寫入其他信息。

以I列為例,關(guān)鍵代碼為:

myRange="I"+Trim(Str(insertWellIndex+i))

Range(myRange).Value=0.2

⑷ 通過Day方法,提取日期中的“日”;Month方法提取日期中的“月”;Year方法提取日期中的“年”。將“年”、“月”、“日”寫入到“工藝改造數(shù)據(jù)”表單中。

以“日”為例,關(guān)鍵代碼為:

currDay=Str(Day(currDate))+"."

Sheets("工藝改造數(shù)據(jù)").Select

myRange="A"+Trim(Str(insertWellIndex+i))

Range(myRange).Value=currDay

2.3.3 利用射孔記錄,創(chuàng)建壓裂記錄

復(fù)制有效射孔記錄區(qū)塊,將其粘貼到與它相鄰的下一行區(qū)塊,通過Range對象的value屬性修改部分單元格的值,生成壓裂記錄數(shù)據(jù)。

3 應(yīng)用效果

經(jīng)過VBA的編程處理,將多個Excel中的射孔數(shù)據(jù)提取并整理在了一個Excel中,使需要的數(shù)據(jù)更規(guī)范整齊。

4 結(jié)束語

在石油地質(zhì)項目中會產(chǎn)生成百上千條井的信息,而用軟件進行油藏成圖時,大部分的數(shù)據(jù)是無效的,在此,有用信息的快速提取顯得至關(guān)重要。通過Excel VBA編程,可以將幾百上千個Excel中的射孔數(shù)據(jù)批量提取出指定的關(guān)鍵數(shù)據(jù),并將其整理成需要的格式,不但簡單方便,而且極大的提高了效率,節(jié)約了時間還提高了數(shù)據(jù)質(zhì)量。但需要明確的是,Excel VBA也存在運行速度相對較慢等問題,因此,在實際處理問題時應(yīng)具體分析是否適合使用這一方法,再做決斷。

參考文獻(References):

[1] 張佩英.自編函數(shù)處理Excel中復(fù)雜數(shù)據(jù)[J].實驗室研究與探索,2007.8:150-152

[2] 陳紅柳.Excel 2000中VBA的應(yīng)用實例[J].職業(yè)教育研究,2005.2:120-121

[3] Dydowicz,p.(2013). VBA as a tool for improving outputs from mass data processing,3.1313-1322

[4] Zhang D, Cheng Q, Agterberg F, et al. An improved solution of local window parameters setting for local singularity analysis based on Excel VBA batch processing technology[J]. Computers&Geosciences;,2016.88(C):54-66

[5] 焦萍萍,周顯春.EXCEL中的VBA程序設(shè)計[J].電腦知識與技術(shù),2016.11(12):63-64

[6] 李曉玫,楊小平.Excel中的VBA程序設(shè)計[J].四川師范大學(xué)學(xué)報(自然科學(xué)版),2004.4:423-426

主站蜘蛛池模板: 91精品人妻一区二区| 成人av专区精品无码国产 | 亚洲国产成人麻豆精品| 精品国产美女福到在线直播| 精品国产一区二区三区在线观看 | 91麻豆精品国产高清在线| 91小视频在线| 色爽网免费视频| 狼友视频国产精品首页| 无码人中文字幕| 婷婷伊人久久| 欧美区一区| 中文成人无码国产亚洲| 欧美区一区| 国产粉嫩粉嫩的18在线播放91 | 无码内射中文字幕岛国片| 国产主播在线一区| 亚洲经典在线中文字幕| 国产亚洲精久久久久久久91| 亚洲第一香蕉视频| 亚洲一欧洲中文字幕在线| 天天躁狠狠躁| 蜜臀av性久久久久蜜臀aⅴ麻豆| 青草国产在线视频| 国产青青操| 国产美女丝袜高潮| 一级黄色网站在线免费看| 少妇精品在线| 在线观看国产精美视频| 欧美日本二区| 99re在线视频观看| 欧美成人免费一区在线播放| 免费国产在线精品一区 | 亚洲无码免费黄色网址| 无码人妻免费| 亚洲成人在线免费| 国内精品免费| 午夜综合网| 中文字幕亚洲乱码熟女1区2区| 国产成本人片免费a∨短片| 乱色熟女综合一区二区| 丁香六月激情婷婷| 在线免费a视频| 丰满的少妇人妻无码区| 永久免费av网站可以直接看的| av尤物免费在线观看| 播五月综合| 中日韩欧亚无码视频| 久久国产热| 欧美一区二区丝袜高跟鞋| 亚洲人成网站18禁动漫无码| 欧美日韩成人在线观看| a毛片基地免费大全| 99视频在线观看免费| 一本大道东京热无码av| 国产综合精品一区二区| 久久国产精品国产自线拍| 国产成人成人一区二区| 香蕉网久久| 国产极品美女在线播放| 色婷婷综合在线| 91av成人日本不卡三区| 亚洲综合亚洲国产尤物| 精品乱码久久久久久久| 噜噜噜综合亚洲| 99热这里只有精品免费| 亚洲乱亚洲乱妇24p| 午夜福利视频一区| 在线一级毛片| 88av在线| 另类综合视频| 免费在线成人网| 蜜桃视频一区二区| 亚洲综合久久一本伊一区| 久久精品无码中文字幕| 国产一级精品毛片基地| 青青草国产在线视频| 中文无码精品A∨在线观看不卡 | 国产女人水多毛片18| 国产精品污视频| 狠狠ⅴ日韩v欧美v天堂| 谁有在线观看日韩亚洲最新视频|