用EXCEL 的内置函数实现船舶水尺计量中的内插计算
2013-12-23福建省轮船有限公司
福建省轮船有限公司 林 熹
对于大型散装船舶而言,水尺计量是比较重要且繁琐的工作, 笔者所在船舶是一艘载重吨为73829的大型散装货轮,有7 个货舱,压载水舱共计23 个,从观察船舶六面吃水开始,到测量每个压载舱的水位,到最后的查表内插计算得出货量,往往需要2 小时,若商检对某些问题有争议,则往往需要更多的时间去完成这项工作,非常麻烦。笔者在工作之余,利用Excel 软件的内置函数功能制作水尺计量专用表格,并设为模板,大大简化了日常的水尺计量工作,只需输入船舶六面水尺、各压载舱的测深数据、船舶留存燃油和淡水等数据,可以立即得到船舶常数、本航次载货量等核心数据,大大简化了查舱容表、内插计算等工作,提高了计算精度和工作效率。
本文的读者要求对EXCEL 内置函数有一定的了解和实际使用经验,若是初学者,请自学相关的EXCEL 书籍入门。大多数的使用者用EXCEL 完成各种初始表格的制作后,会发现要使得EXCEL 完成内插计算比较困难,而制作船舶水尺计量的关键也就在于如何实现有关数据的查找并进行内插计算,本文着重说明如何应用EXCEL 内置函数完成求取舱水重量的内插计算,并以较为详细的步骤完成,实际编制计算表时,可以使用公式的组合,节省有关步骤。
为节省篇幅,笔者仅以我轮2#压载舱为例,讲解如何通过输入船舶吃水差、舱水密度、压载舱测量水位等3 个数据,经过EXCEL 内置函数的内插计算而直接得出2#压载舱的舱水重量。
现以2#压载舱测深为5.25 米,船舶吃水差为-1.0 米,舱水密度为1.025 为例,介绍如何通过内插计算得出舱水重量(结果为1258.6 吨)。
首先,建立一个工作表,将2#压载舱的相关数据输入,如图1 所示。
图1
图1 中,B 列为压载舱测深查表数据,C 列为舱容数据,E4 至K4 为船舶吃水差修正查表值,E4 至K20 为吃水差修正查表区域。B22 输入舱水测深数据(如5.25),B23 输入船舶吃水差数据(如-1.0),H22 输入舱水密度数据(如1.025),单位略去。内插计算时,以压载舱测量水位和船舶吃水差为查表值查取内插计算数值进行内插计算,得出吃水差修正数值;吃水差修正数值与压载舱测深水位相加后得出实际水位(即零吃水差状态下的压载舱水位);以实际压载舱水位查取舱容表,经内插计算得出舱水容积;舱水容积乘以舱水密度即为舱水重量。
其次,在B25 至B48 单元格间建立共计18 步计算步骤,得出舱水重量,如图2 所示。
图2
分析输入数据及舱容表,发现测深5.25 介于数据5.00以及5.50 之间,吃水差-1.0 介于数据-1.5 和-0.5 之间,要完成压载舱水位为5.25 米,船舶吃水差为-1.0 的吃水差修正,我们必须进行内插计算。
按照内插计算要求,我们应查找单元格H15、H16、I15、I16 四个修正值进行内插计算,查找值为B15、B16 及H4、I4, 即以舱水测深5.00 和5.50 及吃水差-1.5 和-0.5 为查找值查找吃水差修正值,其值为0.95、1.39、0.82、1.23,在进行内插计算,首先得出吃水差为-1.0 时测深为5.00 和5.50 的修正值,在进行内插计算得出舱水测深为5.25、吃水差为-1.0时的实际修正值,对测深进行吃水差修正后即得到实际舱水测深6.348;其次以实际舱水测深6.348查6.00处的舱容及6.50处的舱容,再经内插计算得出6.348 测深的实际舱容1227.9;最后以实际舱水容积乘以舱水密度,即得该压载舱压载水实际重量1258.6。具体步骤如下:
步骤一:在B25 单元格输入“=HLOOKUP(B23,E4:K20, (MATCH(B22,B5:B20,1))+1,TRUE)”,(注:引号不输入,下同),即以小于测深和吃水差的表列数值查取吃水差修正内插第一项得出数值0.95;
步骤二:在B26 单元格输入“=HLOOKUP(B23,E4:K20, (MATCH(B22,B5:B20,1))+2,TRUE)”,即以大于测深和小于吃水差的表列数值查取内插第二项得出数值1.39;
步骤三:在B27 单元格输入“=INDEX(E4:K20,(MATCH (B22,B5:B20,1))+1, (MATCH(B23,E4:K4,1))+1)”,即以小于测深和大于吃水差的表列数值查取内插第三项得出数值0.82;
步骤四:在B28 单元格输入“=INDEX(E4:K20,(MATCH (B22,B5:B20,1))+2, (MATCH(B23,E4:K4,1))+1)”,即以大于测深和吃水差的表列数值查取吃水差修正内插第四项得出数值1.23;
步骤五:在单元格B30 输入“=HLOOKUP(B23,E4:K4,1, TRUE)”,即查取吃水差修正的查表值1(小于本船吃水差值,吃水差=-1.5);
步骤六:在单元格B31 输入“=INDEX(E4:K4,1,(MATCH (B23,E4:K4,1))+1)”,即查取吃水差修正的查表值2(大于本船吃水差值,吃水差=-0.5);
步骤七:在单元格B32 输入“=VLOOKUP(B22,B5:B20,1, TRUE)”,即查取测深的内插查表值3(小于实际测深数值,测深=5.0);
步骤八:在单元格B33 输入“=INDEX(B5:B20,(MATCH (B22,B5:B20,1))+1,1)”,即查取测深的内插查表值4(大于实际测深数值,测深=5.5);
到本步骤为止,我们将内插计算需要的各个数值均查找出来,并分别列于B25 至B28,B30 至B33;
步骤九:在单元格B35 输入“=ROUND(B25+(((B25-B27)* (B23-B30))/(B30-B31)),3)”,即求取测深=5.0 处,吃水差为-1.0的吃水差修正值1 得出数据0.885;
步骤十: 在单元格B36输入“=ROUND(B26+(((B26-B28) *(B23-B30))/(B30-B31)),3)”,即求取测深=5.5 处,吃水差为-1.0的吃水差修正值2 得出数据1.310;
步骤十一: 在单元格B37 输入“=ROUND(B35+(B36- B35)*(B22-B32)/(B33-B32),3)”,即求取实际测深=5.25 处,吃水差为-1.0 的实际吃水差修正值,得出实际吃水差修正值1.098;
步骤十二: 在单元格B39 输入“=B22+B37”,即实际测深=测深+实际吃水差修正值,得出吃水差修正后的实际测深值6.348;
步骤十三: 在单元格B41 输入“=VLOOKUP(B39,B5: C20,2,TRUE)”,即以实际测深查取舱容值1(小于实际测深舱容值),得出测深为6.00 处的舱容数据1223.00;
步骤十四: 在单元格 B42 输入“=INDEX(B5:C20, (MATCH(B39,B5:B20,1)+1),2)”,即以实际测深查取舱容值2(大于实际测深舱容值),得出测深为6.50 处的舱容数据1230.00;
步骤十五: 在单元格B43 输入“=VLOOKUP(B39,B5: B20,1,TRUE)”,即以实际测深查取内插的查表值1(小于实际测深)得出数据6.00;
步骤十六: 在单元格 B44 输入“=INDEX(B5:B20, (MATCH(B39,B5:B20,1)+1),1)”,即以实际测深查取内插的查表值2(大于实际测深)得出数据6.50;
步骤十七: 在单元格B46输入“=ROUND(B41+(B42-B41) *(B39-B43)/(B44-B43),1)”,即以实际测深经内插后得出实际舱水容积,得出舱水容积1227.9;
步骤十八: 在单元格B48 输入“=ROUND(B46*H22,1)”,实际舱容乘以舱水密度即为舱水重量,得出最终舱水重量数据1258.6。
经过以上的18 个步骤,我们可以得到2#压载舱的实际舱水重量数据,以上步骤及公式和注释可参看图3。
图3
经过以上实例,我们知道内插计算的关键函数不外乎以下这么几个:值查找和引用函数VLOOKUP、HLOOKUP、INDEX、MATCH,数学与三角函数ROUND、INT 等等,以上有关EXCEL 内置函数的应用和各个参数的设置请读者参阅有关EXCEL 进阶读物和书籍,笔者在此不再详细叙述。
总之,EXCEL 的计算功能是非常强大的,笔者用EXCEL制作了大量的实用表格,如船舶稳性、吃水差、船中强度校核表(小型船舶用);水尺计量计算表;船舶快速配载图表;太阳真出没和视出没方位求罗经差计算表等等,都非常实用,且节约了不少计算时间,而很多计算表各功能的实现大多经过查数据表内插计算完成,所以掌握有关数据的查找和引用并进行内插计算是关键,本文意在抛砖引玉,使得更多的读者利用EXCEL 制作出功能更为强大的船舶实用计算表格,简化我们的日常工作。