曲径通幽花木深──也谈在EXCEL中进行币值转换

Author: 董国红 Date: 2001年 12期

    有幸在2000年6月5日《电脑报》的第59版读到了山东钟震宇同志的《EXCEL中不同币种贷款与人民币的自动转换》一文,深受启发。
      但是我认为用if函数写的公式似乎有些繁琐,而且最重要的是if函数最多只能包含8个嵌套判断9种情况,如果有10个及其以上的币种汇率,if函数就会“卡壳”。
      我根据自己以前的经验,针对同样的问题,用另一个函数试验了一下,结果证明不但可以简化公式而且还可以容纳大数据表。
      仍旧用钟震宇同志的假设数据表(如^12050203a^),单元格区域A1 B5存放预先设定的各外汇汇率,我们称为数据表。A7:B14的内容需要手工输入,C7:C14的值利用公式计算。这里我们不走“判断”的思路,而改走“搜索”的道路来解决问题,也就是用vlookup函数。其功能就是根据用户的指令,在一定范围的数据表中找到符合条件的记录并返回该记录指定字段的内容。
      vlookup函数的原始格式为:vlookup(lookup_value,table_array,col_index_num,range_lookup)。其中参数lookup_value为需要在数据表首列搜索的值(也就是我们想要搜索的内容);table_array为需要在其中搜索数据的数据表;col_index_num为满足条件的单元格在数据表中的列序号;range_lookup指定在查找时是精确匹配还是大致匹配,如果需要大致匹配,则赋值为FALSE,如果需要精确匹配,则赋值为TRUE或忽略此参数。
      说了这么多术语,连我都有些糊涂了。那么就让我们在实例中熟悉vlookup好了。
      在B7单元格中应当这样写公式:“=B7*VLOOKUP(A7,$A$1:$B$5,2,FALSE)/100”。
      VLOOKUP(A7,$A$1:$B$5,2,FALSE)的意思是:在$A$1:$B$5这个固定的数据表的首列中针对A7单元格的内容进行搜索,搜索到首列与A7内容完全相符的记录后就提取该记录第2列的内容(因为汇率是在$A$1:$B$5这个固定的数据表的第2列)。在本例中的实际含义就是,以A7单元格的内容(即字符“USD”)为标准,在$A$1:$B$5这个数据表的首列中搜索,当搜索到与“USD”相同的记录(即第1行)后,指定提取第2列──我们需要的数据──汇率。
      另外请注意:
      1)要用绝对引用来描述数据区域,也就是说要将A1到B5描述成“$A$1:$B$5”,至少要描述为“A$1:B$5”。
      2)最后一个参数必须是“FALSE”,否则会形成混乱。
      公式中其余的内容就好说了:B7单元格的内容乘以利用vlookup函数搜索并提取的汇率再除以100便可以得出正确结果。
      最后将C7复制到C8:C14,大功告成!
      当然,我们可以将汇率清单单独存放在一个工作表中,那样我们的表格将更加美观。我们还可以将存放汇率的数据表增加多个空行,例如增加为A1:B7,将公式中的$A$1:$B$5改为$A$1:$B$7。日后如果增加了新的币种,我们就可以随时在数据表中增加汇率,及时扩充数据。这点充分体现了vlookup函数大容量的特性。
      文章错误之处,万望多多批评指正。??