摘要:為了快速準確地完成巖心含水——氣相色譜法數(shù)據(jù)批量處理,提出了基于EXCEl VBA批量處理色譜數(shù)據(jù)的方法。該方法采用VBA進行編程,實現(xiàn)批量合并、提取巖心含水數(shù)據(jù)到Excel等數(shù)據(jù)編輯軟件中。首先借助TXT批量處理命令,將目標文件夾下所有色譜數(shù)據(jù)導入到一個TXT文件中,然后將該TXT文件中所有數(shù)據(jù)拷貝到目標Excel中,最后利用VBA小程序根據(jù)實驗數(shù)據(jù)處理要求,批量將巖心含水色譜數(shù)據(jù)導出成表。該方法實現(xiàn)了巖心含水色譜數(shù)據(jù)處理自動化,有效地縮短了人工錄入色譜數(shù)據(jù)時間,提升了色譜數(shù)據(jù)處理準確性,滿足了實驗人員后續(xù)數(shù)據(jù)處理的需求。
關(guān)鍵詞:氣相色譜數(shù)據(jù);Excel VBA;數(shù)據(jù)處理
一、前言
隨著油氣田開發(fā)的不斷深入,快速準確地檢測巖心含水對后續(xù)的鉆井方案決策越來越重要,巖心含水氣相色譜法得到了廣泛的應(yīng)用[1]。目前,氣相色譜數(shù)據(jù)多以GCD格式存儲,這種格式的數(shù)據(jù)文件無法在Excel中直接處理[2]。錄井現(xiàn)場實驗人員常常需要逐個將色譜數(shù)據(jù)抄寫出來,然后再錄入Excel中進行數(shù)據(jù)編輯。由于一口井常常有數(shù)千甚至上萬條色譜數(shù)據(jù),人工處理不僅耗時費力,效率低,而且常常由于疏忽將數(shù)據(jù)抄錯,極大地浪費了數(shù)據(jù)處理時間和現(xiàn)場實驗人員的寶貴精力。市場上目前并沒有針對色譜數(shù)據(jù)批量處理的配套軟件,為了能夠快速準確地完成氣相色譜數(shù)據(jù)的批量處理,提出了Excel VBA氣相色譜數(shù)據(jù)批量處理方法。Visual Basic for Application(VBA)是嵌套于OFFICE系列產(chǎn)品中的一套開發(fā)平臺,與OFFICE產(chǎn)品高度集成[3]。VBA內(nèi)置的代碼具有VB語言大多數(shù)的功能和易用性,用戶可以利用簡單的語法和規(guī)則,通過簡易、清晰編程來實現(xiàn)用戶的需求,故VBA編程能快速處理重復的數(shù)據(jù)操作,提升時效[4]。通過前期大量程序調(diào)試,確認了采用VBA編程能快速地批量處理色譜數(shù)據(jù),保證數(shù)據(jù)處理的時效性和準確率。
二、實驗分析技術(shù)
本方法主要分為實驗操作和色譜數(shù)據(jù)處理兩大部分。
(一)實驗操作
1.方法原理
利用水與乙醇均一混溶的特性,將已知質(zhì)量的巖樣浸泡于密封的鋼質(zhì)熱萃取瓶中的定量乙醇中,通過高溫萃取出巖樣中的水[5],萃取液經(jīng)氣相色譜檢測,獲得巖樣含水量。
2.樣品熱萃取
本方法所用的含水檢測儀器是具TCD檢測器的氣相色譜儀,萃取罐容量為200mL。首先選取20g~35g巖心樣品,稱量濕樣質(zhì)量,置入熱萃取罐中。用取液器量取50ml無水乙醇至裝有巖心樣品的熱萃取罐中,上蓋擰緊。將熱萃取罐放入電熱鼓風干燥箱內(nèi),加熱至105℃進行熱萃取,恒溫8h后冷卻至室溫。
3.配標準樣
取出一已加入50ml無水乙醇的萃取罐,作為零點標樣,并將該萃取罐標記為0.00。 然后取已加入乙醇的萃取罐配制標樣,以0.10g或0.20g為級差,將蒸餾水分別加入各熱萃取罐中,擰緊上蓋。對萃取罐標記所加入的水量,保存于樣品箱中待測。
4.含水量測定
按色譜儀操作要求,開機并設(shè)置儀器條件,待儀器穩(wěn)定后開始樣品測定[6]。標樣含水量測定:取出1μL標樣溶液注入色譜儀測定標樣含水量,按照含水量由低到高的順序依次完成系列標樣測定。以標準溶液的水峰面積百分含量為橫坐標,已知含水量為縱坐標作標準曲線。樣品含水量測定依照標樣測定進行。最后依據(jù)樣品實測的水峰面積百分含量,在標準曲線上換算出樣品的水含量。
(二)色譜數(shù)據(jù)處理
1.巖心含水——氣相色譜法數(shù)據(jù)處理要求
以島津GC-2014氣相色譜儀測定乙醇和水的混合溶液中各組分占比為例說明氣相色譜數(shù)據(jù)處理要求。首先將錄井現(xiàn)場取出的巖心放進乙醇溶液中進行萃取,乙醇和水的混合溶液通過進樣針打進氣相色譜儀。由于色譜柱的分離特性,水和乙醇在色譜柱中的運移速度并不相同,水運移較快,大概在0.45秒便會出峰,而乙醇運移較慢,大概在0.9秒出峰,根據(jù)出峰時間和對應(yīng)的積分面積,便可求出混合溶液的水分占比。待第一條色譜數(shù)據(jù)完成后,再取混合溶液進行第二次檢測,如果兩條色譜數(shù)據(jù)結(jié)果差不大于0.05,那么選取較小的色譜數(shù)據(jù)作為含水結(jié)果錄入到Excel中進行后續(xù)的編輯處理。
2.色譜文件樣式
島津GC-2014氣相色譜儀的數(shù)據(jù)以GCD格式存儲,常規(guī)處理方法是先打開樣品的色譜數(shù)據(jù),抄寫下色譜組分數(shù)據(jù),然后再打開平行樣色譜數(shù)據(jù),抄寫下對應(yīng)的色譜組分數(shù)據(jù),最后按照實驗數(shù)據(jù)處理標準,選取較小的數(shù)值作為水組分數(shù)據(jù)。對于大井段上萬條樣品檢測數(shù)據(jù),人工操作不僅費時費力,而且很容易出錯。以下介紹基于EXCEL VBA的高效色譜數(shù)據(jù)處理方法。
以GCD格式的色譜數(shù)據(jù)為例介紹EXCEL VBA色譜數(shù)據(jù)處理方法。用色譜工作站自帶軟件打開GCD格式色譜數(shù)據(jù)。圖1為兩次檢測色譜數(shù)據(jù)的峰值表,由圖1可見,兩次檢測結(jié)果中峰號1濃度項數(shù)據(jù)分別為5.05118和5.07168,為萃取液中水的體積百分比。峰號2濃度項數(shù)據(jù)分別為94.94882和94.92832,為萃取液中乙醇的體積百分比。色譜數(shù)據(jù)提取的是萃取液中水的體積百分比。
3.原始數(shù)據(jù)格式轉(zhuǎn)換、合并及導入
VBA程序基于“批量化處理、自動化提取”的設(shè)計宗旨,按照“兩步走”的程序流程,將原始色譜數(shù)據(jù)批量合并導入、批量處理提取。
第一,原始色譜數(shù)據(jù)文件為GCD格式,首先需要將它們轉(zhuǎn)化為TXT格式,并將所有TXT文件放入同一文件夾內(nèi),為以后批量合并做準備,如圖2所示。
第二,利用.bat批處理文件,將該文件下的所有.txt文件匯總存儲到一個新的.txt文件。
第三,新建一個Excel文件,將匯總后的.txt文件數(shù)據(jù)拷貝到新建的Excel工作表中。
4.VBA提取、篩選水峰
批量處理主要是將色譜數(shù)據(jù)處理為標準樣品號和水峰項,去除其他的不相關(guān)內(nèi)容,包括將所有數(shù)據(jù)設(shè)置為文本模式、提取樣品號信息、去掉樣品號文件的前綴后綴、提取水峰信息。批量提取功能主要是按照實驗數(shù)據(jù)處理要求,從兩個或多個水峰數(shù)據(jù)中提取數(shù)值,并按照樣品號排序成表,包括按照兩組數(shù)據(jù)之差絕對值不大于0.05、取較小值的原則取值,然后刪除其余的樣品號和水峰,最后成表輸出,如圖3所示。
打開新建的Excel文件,按快捷鍵Alt+F11,進入Excel的VBA編輯窗口,依次點擊插入、模塊,輸入以下代碼:
(1)將樣品號修改為標準樣品號。
Sub jxx()'提取樣品號信息
Dim i,k As Long
For i=1ToSheets(1).Range(\"b65536\").End(xlUp).Row
If InStr(Sheets(1).Range(\"a\"amp;i),\"Header\")lt;gt;0Then
k=Sheets(2).Range(\"a65536\").End(xlUp).Row
Sheets(1).Range(\"a\"amp;i).Offset(1,1).Copy Sheets(2).Range(\"a\"amp;k+1)
End If
Next
End Sub Sub gcd()'去掉.gcd后綴
Dim i As Long
For i=1ToRange(\"a65536\").End(xlUp).Row
If InStr(Range(\"a\"amp;i),\".gcd\")lt;gt;0Then
Range(\"b\"amp;i)=Split(Range(\"a\"amp;i),\".gcd\")(0)
End If
Next
End Sub
Sub paixu1()'排序
Range(\"a2:g250\").Sortkey1:=Range(\"d2\")
End Sub
(2)提取樣品號對應(yīng)的水峰值,并按照實驗要求選擇水峰。
Sub tiquhs()'提取水峰
Dim i,kAsInteger
For i=1ToSheets(1).Range(\"a65536\").End(xlUp).Row
If InStr(Sheets(1).Range(\"a\"amp;i),\"Header\")lt;gt;0Then
k=Sheets(2).Range(\"e65536\").End(xlUp).Row
Sheets(1).Range(\"a\"amp;i).Offset(59,7).CopySheets(2).Range(\"e\"amp;k+1)
End If
Next
End Sub Sub danciyang()'按照標準要求取值
Dim i AsInteger
For =1To300
Setrg=Range(\"d1:e300\")
If Application.Worksheet Function.Count If(rg,Range(\"d\"amp;i))=1Then
Range(\"f\"amp;i)=Range(\"e\"amp;i)
End If
Next
End Sub
(3)刪除空值、重復值、排序,輸出成表。
Sub chengbiao()'成表
If Range(\"f1\")lt;gt;0Then
Range(\"d1\").Resize(Range(\"d65536\").End(xlUp).Row,1).CopyRange(\"a1\")
End If
If Range(\"f1\")lt;gt;0Then
Range(\"f1\").Resize(Range(\"d65536\").End(xlUp).Row,1).CopyRange(\"b1\")
End If
End Sub Sub paixu2()'排序
Call quweiyi
Call quchong
Call zhuanshuzi
Range(\"a1:b250\").Sortkey1:=Range(\"a1\")
End Sub
三、應(yīng)用效果
為了檢查該方法應(yīng)用效果,選取了100塊樣品進行了實驗對比。通過實驗結(jié)果對比,該方法相比改進前的方式具有以下優(yōu)點:第一,處理色譜數(shù)據(jù)效率高。100塊樣品大約有200條色譜數(shù)據(jù),色譜數(shù)據(jù)導出、選擇、錄入,通過人工按行逐一地進行抄寫處理需要3天左右。采用VBA軟件處理僅需10分鐘,將原先需要15天的色譜含水測定處理周期縮短為11天,大大提高了色譜數(shù)據(jù)處理效率。第二,色譜數(shù)據(jù)處理實現(xiàn)零誤差。VBA小程序內(nèi)置自動識別、選擇數(shù)據(jù)代碼,可以自動將符合篩選條件的數(shù)據(jù)選出,全程無需人工抄寫、選擇等操作,避免了因人工疏忽等原因造成的誤差,保證了色譜數(shù)據(jù)處理的準確性。第三,簡化了處理色譜數(shù)據(jù)流程。以前人工處理色譜數(shù)據(jù)需要6步操作,經(jīng)過VBA小程序的簡化,將色譜數(shù)據(jù)的導出、選擇、錄入合并成一步,只需4步便可實現(xiàn)巖心含水測定,有效縮短了色譜數(shù)據(jù)的處理流程,如圖4所示。
綜上所述,VBA色譜數(shù)據(jù)批量處理程序可以準確、快速地完成色譜數(shù)據(jù)處理提取等任務(wù),減少了大量枯燥、繁瑣而且容易犯錯的前期數(shù)據(jù)準備環(huán)節(jié),提高了地質(zhì)工作人員的工作效率,滿足后期儲層評價需求。另外,基于該方法在數(shù)據(jù)處理上的優(yōu)勢,還可以延伸到其他相關(guān)數(shù)據(jù)的處理中。例如,提取實驗報告,只需進行簡單的改動,便可實現(xiàn)大量數(shù)據(jù)的快速提取與整理,為錄井現(xiàn)場地質(zhì)人員后續(xù)分析提供了極大的便利。
四、結(jié)語
隨著石油行業(yè)勘探開發(fā)進程的不斷深化,大批量的數(shù)據(jù)應(yīng)用分析將是未來的發(fā)展趨勢,地質(zhì)開發(fā)研究人員將面對越來越繁雜的資料數(shù)據(jù)。因此,善于運用計算機編程語言處理繁瑣又重復的工作顯得尤為重要。VBA附屬于Microsoft Office平臺,可以將小命令、動作轉(zhuǎn)換為一系列的指令,在減少Excel重復性工作,讓實驗數(shù)據(jù)處理簡易化、自動化、智能化方面具有強大的功能。它不僅廣泛應(yīng)用于不同的程序,同時也應(yīng)用于不同的領(lǐng)域。對于石油地質(zhì)行業(yè)來說,VBA在錄井、測井、實驗數(shù)據(jù)處理方面都有廣泛的應(yīng)用,比如錄井資料的快速錄入、測井數(shù)據(jù)格式轉(zhuǎn)換、油氣田生產(chǎn)數(shù)據(jù)批量處理等。掌握了VBA就可以讓復雜的工作變得簡單,大大提高工作效率,實驗地質(zhì)人員只需要在不同的宏代碼基礎(chǔ)上按照自己的需求進行局部修改和調(diào)試就可完成程序的開發(fā),即使沒有太多編程經(jīng)驗的石油地質(zhì)人員,只需要掌握VBA的基礎(chǔ)代碼結(jié)構(gòu)和編程的思路,就可以順利完成程序的編制,解決現(xiàn)場工作的實際難題。
參考文獻
[1]馮蓓華,鞏文林.利用VBA簡化錄井資料處理過程的兩個實例[J].石油工業(yè)計算機應(yīng)用,2014(02):32-35.
[2]高立東.氣相色譜法測定氨觸媒升溫還原中水汽濃度[J].廣東化工,2012,39(02):179-180.
[3]韓小良,韓舒婷編著.Excel VBA從入門到精通[M].北京:中國鐵道出版社,2006.
[4]李曉玫,楊小平.Excel中的VBA程序設(shè)計[J].四川師范大學學報(自然科學版),2004(04):423-426.
[5]武曉鵬.卡爾費休庫倫法在巖石含水飽和度中的應(yīng)用[J].石化技術(shù),2018,25(06):171.
[6]李春瑛,金美蘭,吳方迪,等.天然氣氣相色譜分析方法的研究[J].低溫與特氣,2002(05):37-40.
作者單位:大慶油田勘探開發(fā)研究院中心化驗室
■ 責任編輯:王穎振、楊惠娟