陳健偉
(福建出入境檢驗檢疫局檢驗檢疫技術中心,福建 福州 350003)
為適應現代紡織品的性能需求,越來越多的紡織品采用了多組分纖維混紡的方式,從而對紡織纖維檢測工作提出了更高的要求。現行標準FZ/T 01026-2017《紡織品 定量化學分析 多組分纖維混合物》給出了4組分乃至更多組分纖維混紡比的計算模型[1],其基本操作方法是將混合物中的各組分逐一溶解,類似于GB/T 2910.2-2009中的方案4[2]。該標準給出了n組分纖維混合物試樣凈干質量百分率的計算公式(以下簡稱“通用計算式”),并以此為基礎,對4/5/6組分混紡織物定量化學分析結果計算進行了示例。若混合物纖維組分數大于6,則應利用通用計算式進行計算。為簡化計算過程,避免因變量過多導致計算出錯,有必要利用計算機語言實現纖維定量順序溶解方案的算法。
VBA的英文全稱是Visual Basic for Application,是VB語言的子集,不但繼承了VB的開發機制,而且與VB有著相同的程序結構和開發環境。它能簡單直觀地訪問Office軟件的各個部分,比如可以直接讀寫Excel單元格。這使我們學習程序設計變得非常直觀,能利用編程輕松地解決實際工作問題[3]。故選擇Excel中自帶的VBA開發工具實現上述算法,并開發出計算工具。
先新建一個Excel文件,另存為xlsm格式,然后打開此文件進行計算工具界面的設計。確定需要輸入的內容包括:試樣凈干質量m、組分數n、每一組分的名稱和公定回潮率、每一步溶解采用的試劑(用于確定質量損失修正系數,即d值)、每一步溶解完剩余的質量r;需要輸出的內容是各組分的凈干質量百分率P或者公定質量百分率PA(根據需要選擇)。
由于纖維類型及其回潮率、溶解試劑都是種類較多而相對固定的,這幾類數據通過下拉選擇的形式輸入較為合適;計算方式也可以設計成選擇的形式,備選項包括“凈干含量”和“結合回潮率含量”兩種。另外,由于d值較多,在點擊需要輸入d值的單元格時,可根據纖維類型和溶解試劑給出相應提示。根據這些思路,先在Sheet1工作表設計出工具主界面,見表1。

表1 計算工具主界面
其中,B1單元格用于輸入組分數,設置其數據有效性條件為“允許整數,介于2到20”。D1單元格用于輸入凈干質量m,設置其小數位數為4位。F1單元格設置其有效性條件為“允許序列,來源:凈干含量,結合回潮率”。第1列從A4開始往后的單元格用于輸入組分名稱,第2行從C2開始往后的單元格用于輸入試劑名稱;第3行從C3開始往后的單元格用于輸入每一步溶解完剩余的質量r(小數位數也設為4位),第2列從B4開始往后的單元格用于顯示計算結果。此外,H1單元格用于顯示d值填寫提示。
為了便于纖維類型及其回潮率、溶解試劑的選擇輸入,在Sheet2工作表中設計出如圖2的備選資料界面(此表可擴展)。然后將上述用于輸入組分名稱的單元格的有效性條件設置為“允許序列,來源==Sheet2!$A$2:$A$99”,用于輸入試劑名稱的單元格的有效性條件設置為“允許序列,來源=Sheet2!$C$2:$C$99”。至此完成工具界面設計。

圖2 備選資料界面
首先,定義普通變量n、m和一維數組變量r、P、PA、A,以及二維數組變量d,以上變量的意義與標準一致;定義各個循環用的整型變量i、j、k,以及存放臨時計算數據的double型變量temp1、temp2。以下是各個模塊的主要功能。
當B1單元格內容改變時觸發兩個事件,一是重新對n賦值,二是根據n的大小確定需要填寫的單元格區域,并用其他顏色高亮;同時參照FZ/T 01026-2017中表1的形式,在相應單元格填上“溶解”、“--”等字樣,以便于辨識。代碼從略。
當點擊需要填寫d值的單元格時,根據此單元格位置,先找到對應的纖維類型和溶解試劑,然后在H1單元格給出相應的填寫提示,例如“聚酯纖維 在75%硫酸中損失系數”。代碼從略。
此模塊為核心模塊。先用各單元格填寫的內容對相應變量進行賦值,然后計算。
先計算Pn:
temp1 = 1
For i = 1 To n - 1
temp1 = temp1 ? d(n, i)
Next
P(n) = Round(100 ? r(n - 1) ? temp1 / m, 2)
再計算Pk(2≤k≤n-1):
For k = n - 1 To 2 Step -1
temp1 = 0
For i = k + 1 To n
temp2 = 1
For j = 1 To k - 1
temp2 = temp2 ? d(i, j)
Next
temp2 = P(i) / temp2
temp1 = temp1 + temp2
Next
temp1 = 100 ? r(k - 1) / m - temp1
For j = 1 To k - 1
temp1 = temp1 ? d(k, j)
Next
P(k) = Round(temp1, 2)
Next
計算P1,完成凈干含量的求解:
P(1) = 100
For i = 2 To n
P(1) = P(1) - P(i)
Next
P(1) = Round(P(1), 2)
計算公定質量百分率PA:
temp1 = 0
For i = 1 To n
A(i) = Application.VLookup(Cells(i + 3, 1),Sheet2.Range("A2:B99"), 2, False)
PA(i) = P(i) ? (1 + 0.01 ? A(i))
temp1 = temp1 + PA(i)
Next
PA(n) = 100
For i = 1 To n - 1
PA(i) = Round(100 ? PA(i) / temp1, 1)
PA(n) = Round(PA(n) - PA(i), 1)
Next
最后根據需要,將凈干質量百分率P或公定質量百分率PA填寫回對應單元格,模塊結束。
包括“清空質量記錄和結果”和“初始化”兩個模塊,前者用于同樣的實驗條件下輸入新的m、r值進行結果計算,后者用于初始化界面以設計新的實驗條件。代碼從略。
以FZ/T 01026-2017的附錄A~附錄C給出的示例[1],用本工具進行計算,結果如表1(按照第1組分、第2組分、第3組分……的順序排列,用斜杠分隔開)。
由表1可見,本工具的計算結果與標準對比,在凈干質量百分率P的結果里面僅有≤0.01%的計算誤差,由于足夠小可以忽略;而公定質量百分率PA的結果則與標準完全一致;在填完各組數據后,運行“計算”模塊馬上能得到結果,計算效率高。

表1 本工具計算結果與標準結果對照
文章所描述的工具對于順序溶解方案通用性強,計算結果準確、計算過程高效,對簡化多組分纖維定量結果計算過程具有指導意義。使用時可以根據需要在工具中加入更多的功能,例如坩堝和稱量瓶質量的輸入模塊,以及平行實驗計算功能等,使之更加便于實際使用。