日本在线观看不卡,国产成人免费观看,国产gaysex男同视频chinese,欧美一级www

樹人論文網(wǎng)一個(gè)專業(yè)的學(xué)術(shù)咨詢網(wǎng)站?。?!
樹人論文網(wǎng)

工程地質(zhì)論文發(fā)表基于VBA的石油地質(zhì)數(shù)據(jù)處理

來源: 樹人論文網(wǎng)發(fā)表時(shí)間:2019-01-15
簡(jiǎn)要:海量數(shù)據(jù)處理是石油地質(zhì)項(xiàng)目開展過程中的重要工作,若依靠純手工處理工作量巨大。文章提出了基于VBA數(shù)據(jù)批量處理方法,以氣藏?cái)?shù)值模擬工藝改造數(shù)據(jù)的處理為例,在EXCEL中運(yùn)用V

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

貴州地質(zhì)

  《貴州地質(zhì)》是本刊1984創(chuàng)刊,國(guó)內(nèi)外公開發(fā)行,季刊。貴州省地質(zhì)礦產(chǎn)勘查開發(fā)局主管,貴州省地質(zhì)調(diào)查院主辦的公開發(fā)行的科技季刊。其主要任務(wù)是:反映我省地學(xué)進(jìn)展和科研成果,介紹國(guó)內(nèi)外地學(xué)發(fā)展動(dòng)態(tài),報(bào)道地學(xué)界重大事件,為我省的社會(huì)經(jīng)濟(jì)發(fā)展普及地學(xué)知識(shí),為我省的地學(xué)發(fā)展培育人才。

  0 引言

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

  1 工作流程

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

  2 實(shí)現(xiàn)方法

  2.1 文件的讀取

  2.1.1 使用FSO對(duì)象

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

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

  Set objFileSystem=CreateObject("Scripting

  .FileSystemObject")

  2.1.2 獲取文件路徑

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

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

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

  2.2 設(shè)置輸出表頭

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

  2.2.1 寫入表頭

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

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

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

  2.2.2 設(shè)置格式

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

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

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

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

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

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

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

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

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

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

  wellname=Trim(ActiveCell.Value)

 ?、?打開工射孔數(shù)據(jù)文件,即對(duì)應(yīng)井號(hào)的射孔數(shù)據(jù)。定義wellFile存放射孔數(shù)據(jù)文件路徑,通過OFS對(duì)象的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對(duì)象的UsedRange屬性可以返回工作表中已經(jīng)使用的單元格圍成的矩形區(qū)域,首先計(jì)算出“工藝改造數(shù)據(jù)”表單中將“工藝改造數(shù)據(jù)”表中已經(jīng)使用的單元格圍成的矩形區(qū)域的行數(shù),插入“工藝改造數(shù)據(jù)”表并使每個(gè)區(qū)域與下一個(gè)區(qū)域之間有兩行的距離。通過Range對(duì)象的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ù)”表中的指定位置

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

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

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

  ⑵ 通過循環(huán)判斷射孔數(shù)據(jù)的條數(shù)是否大于1,對(duì)射孔數(shù)據(jù)進(jìn)行遍歷,當(dāng)射孔數(shù)據(jù)是1條時(shí),說明只有表頭,故不進(jìn)行操作,進(jìn)入下一次循環(huán);當(dāng)射孔數(shù)據(jù)條數(shù)多于1條時(shí),對(duì)射孔數(shù)據(jù)中的關(guān)鍵信息進(jìn)行提取,并寫入到 “工藝改造數(shù)據(jù)”表指定單元格中。寫入其他信息,再提取工作簿1中的“井號(hào)”表單日期數(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對(duì)象的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對(duì)象的value屬性修改部分單元格的值,生成壓裂記錄數(shù)據(jù)。

  3 應(yīng)用效果

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

  4 結(jié)束語(yǔ)

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

  參考文獻(xiàn)(References):

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

  [2] 陳紅柳.Excel 2000中VBA的應(yīng)用實(shí)例[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ì)[J].電腦知識(shí)與技術(shù),2016.11(12):63-64

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