2.3.6用NPOI操作EXCEL--COUNTIF和SUMIF函数

一、COUNTIF 
     这一节,我们一起来学习Excel中另一个常用的函数--COUNTIF函数,看函数名就知道这是一个用来在做满足某条件的计数的函数。先来看一看它的语法:COUNTIF(range,criteria),参数说明如下:
Range需要进行读数的计数
Criteria条件表达式,只有当满足此条件时才进行计数

接下来看一个例子,代码如下:

HSSFSheet sheet1  =  hssfworkbook.CreateSheet( " Sheet1 " );

HSSFRow row1 
=  sheet1.CreateRow( 0 );
row1.CreateCell(
0 ).SetCellValue( " 姓名 " );
row1.CreateCell(
1 ).SetCellValue( " 成绩 " );

HSSFRow row2 
=  sheet1.CreateRow( 1 );
row2.CreateCell(
0 ).SetCellValue( " 令狐冲 " );
row2.CreateCell(
1 ).SetCellValue( 85 );

HSSFRow row3 
=  sheet1.CreateRow( 2 );
row3.CreateCell(
0 ).SetCellValue( " 任盈盈 " );
row3.CreateCell(
1 ).SetCellValue( 90 );

HSSFRow row4 
=  sheet1.CreateRow( 3 );
row4.CreateCell(
0 ).SetCellValue( " 任我行 " );
row4.CreateCell(
1 ).SetCellValue( 70 );

HSSFRow row5 
=  sheet1.CreateRow( 4 );
row5.CreateCell(
0 ).SetCellValue( " 左冷婵 " );
row5.CreateCell(
1 ).SetCellValue( 45 );

HSSFRow row6 
=  sheet1.CreateRow( 5 );
row6.CreateCell(
0 ).SetCellValue( " 岳不群 " );
row6.CreateCell(
1 ).SetCellValue( 50 );

HSSFRow row7 
=  sheet1.CreateRow( 6 );
row7.CreateCell(
0 ).SetCellValue( " 合格人数: " );
row7.CreateCell(
1 ).SetCellFormula( " COUNTIF(B2:B6,\ " > 60 \ " ) " );

执行结果如下:

      我们可以看到,CountIf函数成功的统计出了区域“B2:B6”中成绩合格的人数(这里定义成绩大于60为合格)。

二、SUMIF

      接下来,顺便谈谈另一个与CountIF类似的函数—SumIf函数。此函数用于统计某区域内满足某条件的值的求和(CountIf是计数)。与CountIF不同,SumIF有三个参数,语法为 SumIF(criteria_range, criteria,sum_range),各参数的说明如下:

criteria_range条件测试区域,第二个参数Criteria中的条件将与此区域中的值进行比较
criteria条件测试值,满足条件的对应的sum_range项将进行求和计算
sum_range汇总数据所在区域,求和时会排除掉不满足Criteria条件的对应的项
我们还是以例子来加以说明:
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("令狐冲");
row2.CreateCell(
1).SetCellValue("一月");
row2.CreateCell(
2).SetCellValue(1000);

HSSFRow row3 
= sheet1.CreateRow(2);
row3.CreateCell(
0).SetCellValue("任盈盈");
row3.CreateCell(
1).SetCellValue("一月");
row3.CreateCell(
2).SetCellValue(900);

HSSFRow row4 
= sheet1.CreateRow(3);
row4.CreateCell(
0).SetCellValue("令狐冲");
row4.CreateCell(
1).SetCellValue("二月");
row4.CreateCell(
2).SetCellValue(2000);

HSSFRow row5 
= sheet1.CreateRow(4);
row5.CreateCell(
0).SetCellValue("任盈盈");
row5.CreateCell(
1).SetCellValue("二月");
row5.CreateCell(
2).SetCellValue(1000);

HSSFRow row6 
= sheet1.CreateRow(5);
row6.CreateCell(
0).SetCellValue("令狐冲");
row6.CreateCell(
1).SetCellValue("三月");
row6.CreateCell(
2).SetCellValue(3000);

HSSFRow row7 
= sheet1.CreateRow(6);
row7.CreateCell(
0).SetCellValue("任盈盈");
row7.CreateCell(
1).SetCellValue("三月");
row7.CreateCell(
2).SetCellValue(1200);

HSSFRow row8 
= sheet1.CreateRow(7);
row8.CreateCell(
0).SetCellValue("令狐冲一季度销售额:");
row8.CreateCell(
2).SetCellFormula("SUMIF(A2:A7,\"=令狐冲\",C2:C7)");

HSSFRow row9 
= sheet1.CreateRow(8);
row9.CreateCell(
0).SetCellValue("任盈盈一季度销售额:");
row9.CreateCell(
2).SetCellFormula("SUMIF(A2:A7,\"=任盈盈\",C2:C7)");
执行结果如下:

如上图,SUMIF统计出了不同人一季度的销售额。

 

返回目录

 

转载于:https://www.cnblogs.com/atao/archive/2009/09/16/1567379.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值