2.3.7 用NPOI操作EXCEL--LOOKUP函数

      今天,我们一起学习Excel中的查询函数--LOOKUP。其基本语法形式为LOOKUP(lookup_value,lookup_vector,result_vector)。还是以例子加以说明更容易理解:

ContractedBlock.gif ExpandedBlockStart.gif Code
HSSFSheet sheet1 = hssfworkbook.CreateSheet("Sheet1");
HSSFRow row1 
= sheet1.CreateRow(0);
row1.CreateCell(
0).SetCellValue("收入最低");
row1.CreateCell(
1).SetCellValue("收入最高");
row1.CreateCell(
2).SetCellValue("税率");

HSSFRow row2 
= sheet1.CreateRow(1);
row2.CreateCell(
0).SetCellValue(0);
row2.CreateCell(
1).SetCellValue(3000);
row2.CreateCell(
2).SetCellValue(0.1);

HSSFRow row3 
= sheet1.CreateRow(2);
row3.CreateCell(
0).SetCellValue(3001);
row3.CreateCell(
1).SetCellValue(10000);
row3.CreateCell(
2).SetCellValue(0.2);

HSSFRow row4 
= sheet1.CreateRow(3);
row4.CreateCell(
0).SetCellValue(10001);
row4.CreateCell(
1).SetCellValue(20000);
row4.CreateCell(
2).SetCellValue(0.3);

HSSFRow row5 
= sheet1.CreateRow(4);
row5.CreateCell(
0).SetCellValue(20001);
row5.CreateCell(
1).SetCellValue(50000);
row5.CreateCell(
2).SetCellValue(0.4);

HSSFRow row6 
= sheet1.CreateRow(5);
row6.CreateCell(
0).SetCellValue(50001);
row6.CreateCell(
2).SetCellValue(0.5);


HSSFRow row8 
= sheet1.CreateRow(7);
row8.CreateCell(
0).SetCellValue("收入");
row8.CreateCell(
1).SetCellValue("税率");

HSSFRow row9 
= sheet1.CreateRow(8);
row9.CreateCell(
0).SetCellValue(7800);
row9.CreateCell(
1).SetCellFormula("LOOKUP(A9,$A$2:$A$6,$C$2:$C$6)");

      这是一个根据工资查询相应税率的例子。我们首先创建了不同工资区间对应税率的字典,然后根据具体的工资在字典中找出对应的税率。执行后生成的Excel如下:
 
下面对各参数加以说明:
第一个参数:需要查找的内容,本例中指向A9单元格,也就是7800;
第二个参数:比较对象区域,本例中的工资需要与$A$2:$A$6中的各单元格中的值进行比较;第三个参数:查找结果区域,如果匹配到会将此区域中对应的数据返回。如本例中返回$C$2:$C$6中对应的值。
可能有人会问,字典中没有7800对应的税率啊,那么Excel中怎么匹配的呢?答案是模糊匹配,并且LOOKUP函数只支持模糊匹配。Excel会在$A$2:$A$6中找小于7800的最大值,也就是A3对应的3001,然后将对应的$C$2:$C$6区域中的C3中的值返回,这就是最终结果0.2的由来。这下明白了吧:)

VLOOKUP
      另外,LOOKUP函数还有一位大哥--VLOOKUP。两兄弟有很多相似之处,但大哥本领更大。Vlookup用对比数与一个“表”进行对比,而不是Lookup函数的某1列或1行,并且Vlookup可以选择采用精确查询或是模糊查询方式,而Lookup只有模糊查询。
将上例中设置公式的代码换成:
row9.CreateCell( 1 ).SetCellFormula( " VLOOKUP(A9,$A$2:$C$6,3,TRUE) " );
执行后生成的Excel样式如下:

第一个参数:需要查找的内容,这里是A9单元格;
第二个参数:需要比较的表,这里是$A$2:$C$6,注意VLOOKUP匹配时只与表中的第一列进行匹配。
第三个参数:匹配结果对应的列序号。这里要对应的是税率列,所以为3。
第四个参数:指明是否模糊匹配。例子中的TRUE表示模糊匹配,与上例中一样。匹配到的是第三行。如果将此参数改为FALSE,因为在表中的第1列中找不到7800,所以会报“#N/A”的计算错误。

      另外,还有与VLOKUP类似的HLOOKUP。不同的是VLOOKUP用于在表格或数值数组的首列查找指定的数值,并由此返回表格或数组当前行中指定列处的数值。而HLOOKUP用于在表格或数值数组的首行查找指定的数值,并由此返回表格或数组当前列中指定行处的数值。读者可以自已去尝试。

 

返回目录

 

转载于:https://www.cnblogs.com/atao/archive/2009/09/27/1575317.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值