精华内容
下载资源
问答
  • POI Excel 单元格内容类型判断并取值

    万次阅读 2017-01-04 15:15:07
    做Excel导入功能时,读取Excel单元格内容需要区分类型switch (cell.getCellType()) { case HSSFCell.CELL_TYPE_NUMERIC: // 数字 //如果为时间格式的内容 if (HSSFDateUtil.isCellDateFormatted(cell)) {

    做Excel导入功能时,读取Excel单元格内容需要区分类型

    switch (cell.getCellType()) {
          case HSSFCell.CELL_TYPE_NUMERIC: // 数字
              //如果为时间格式的内容
              if (HSSFDateUtil.isCellDateFormatted(cell)) {      
                 //注:format格式 yyyy-MM-dd hh:mm:ss 中小时为12小时制,若要24小时制,则把小h变为H即可,yyyy-MM-dd HH:mm:ss
                 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");  
                 value=sdf.format(HSSFDateUtil.getJavaDate(cell.
                 getNumericCellValue())).toString();                                 
                   break;
               } else {
                   value = new DecimalFormat("0").format(cell.getNumericCellValue());
               }
              break;
          case HSSFCell.CELL_TYPE_STRING: // 字符串
              value = cell.getStringCellValue();
              break;
          case HSSFCell.CELL_TYPE_BOOLEAN: // Boolean
              value = cell.getBooleanCellValue() + "";
              break;
          case HSSFCell.CELL_TYPE_FORMULA: // 公式
              value = cell.getCellFormula() + "";
              break;
          case HSSFCell.CELL_TYPE_BLANK: // 空值
              value = "";
              break;
          case HSSFCell.CELL_TYPE_ERROR: // 故障
              value = "非法字符";
              break;
          default:
              value = "未知类型";
              break;
     }
    展开全文
  • 润乾报表-单元格函数

    千次阅读 2016-09-29 20:56:32
    单元格函数 1.avg() 函数说明: 对可扩展单元格或集合表达式求平均 语法: avg(expression{,containNull}) 参数说明: expression 需要求平均单元格或表达式,一般为可扩展单元格或集合表达式containNull ...

    单元格函数

    1.avg()

    函数说明:对可扩展单元格或集合表达式求平均值

    语法: avg(expression{,containNull})

    参数说明: expression 需要求平均值的单元格或表达式,一般为可扩展单元格或集合表达式containNull 是否对null元素进行计数

    返回值: 实数


    示例:

    例1:avg(A1:B10) 求得A1至B10之间单元格的平均值,注意是以当前格为基格计算A1和B10

    例2:avg(arg1) 其中arg1是整数组,表示求得arg1中所有数据的平均值

    例3:avg(B1{}) 表示求得当前主格扩展区域内所有扩展后的B1单元格的平均值

    例4:avg(B1{`0}{}) 表示求得根坐标下所有扩展后的B1单元格的平均值

    例5:avg(list(2,4,null),false)返回3,如果containNull为true或缺省则返回2


    2.avg2()

    函数说明: 以指定单元格集的元素为基格计算表达式求平均值

    语法: avg2(cellExp,exp{,containNull})

    参数说明: cellExp 单元格或单元格集合,以cellExp里的单元格为当前格计算表达式exp exp 表达式 containNull 是否对null元素进行计数

    返回值: 实数


    示例:

    例1:avg2(A1[`0]{},B1+C1) 计算分别与每个A1相对应的B1、C1的和的平均值


    3.call()

    函数说明: 执行存储过程,返回结果数据集合,只能返回单列数据,如果存储过程返回多个字段,则返回第一个字段的结果值

    语法: call(sqlStatement{,arg1{,arg2{,arg3{,……}}}})

    参数说明: sqlStatement 合法的调用存储过程的sql语句 arg(n) sql语句的参数,可以是常数也可以是表达式,如果是输出结果集的参数,对应的参数表达式写成"@@result"

    返回值: 一组数据的集合,由结果集的第一个字段决定数据类型,如果结果集是多列,只返回第一列


    示例:

    例1:call("{call ResultSet (?,?,?)}","@@result","000001",A2) 表示执行存储过程ResultSet,第一个输出参数输出结果集,第二、三个参数传入"000001",A2作为参数值


    4.call2()

    函数说明: 除第一个参数为数据源连接外,其他参数可call()函数相同,功能也和call()函数相同,通过第一个参数,可以实现不同的单元格连接不同的数据源。

    语法: call2(dbName,sqlStatement{,arg1{,arg2{,arg3{,……}}}})

    参数说明: dbName 数据源名称 sqlStatement 合法的调用存储过程的sql语句 arg(n) sql语句的参数,可以是常数也可以是表达式, 如果是输出结果集的参数,对应的参数表达式写成"@@result"

    返回值: 一组数据的集合,由结果集的第一个字段决定数据类型,如果结果集是多列,只返回第一列


    示例:

    例1:call2("demo","{call ResultSet (?,?,?)}","@@result","000001",A2) 表示对数据源demo执行存储过程ResultSet,第一个输出参数输出结果集,第二、三个参数传入"000001",A2作为参数值


    5.case()

    函数说明: 根据表达式的不同计算结果,返回不同的值。本函数:从左到右计算,先出现的表达式先算,如果出现满足的表达式,则返回相应的结果,后面的不再计算。如果没有一个表达式满足条件,而且有缺省值表达式,则返回缺省值,否则返回null。

    语法: case(Exp{,list(valueExp11,valueExp12,...),resultExp1{,list(valueExp21,valueExp22,...),resultExp2{,...{,defaultExp}}}})

    参数说明: Exp 判断用到的表达式 valueExp(n) 值表达式 resultExp(n) 返回结果表达式 defaultExp 缺省值表达式,如果所有表达式结果都不满足,则返回本表达式计算结果


    示例:

    case("上海",list("北京","天津"),"1",list("武汉","上海"),"2")运算结果为:"2"

    case("上海",list("北京","天津"),"1",list("武汉"),"2","3") 运算结果为:"3"

    case("上海",list("北京","天津"),"1",list("武汉"),"2") 运算结果为:null


    6.cell()

    函数说明: 在平面内取单元格,注意这里的单元格是运算后的单元格

    语法: cell({cellExp}{,rowOffsetExp{,colOffsetExp}})

    参数说明: cellExp 单元格表达式(不写表示当前单元格) rowOffsetExp 整数的相对cellExp的行偏移量表达式 colOffsetExp 整数的相对cellExp的列偏移量表达式


    示例: cell(,1,-5) 取得当前单元格的下一行,左边5列的单元格 cell(C1) 取得与当前单元格的偏移为“当前单元格的源格与C1的偏移”的格 cell(D1,1,3) 取得D1的下一行,右3列的单元格


    7.col()

    函数说明: 取得当前单元格所在列的列号

    语法: col({cellExp}) 参数说明: cellExp 单元格表达式(不写表示当前单元格)

    返回值: 整数


    举例:

    在B列单元格中写入=col(),返回值为2,如果B列存在横向扩展格,则列号依次改变。


    8.count()

    函数说明: 对可扩展单元格或集合表达式进行计数

    语法: count(expression{,containNull})

    参数说明: expression 需要被计数的单元格或表达式,一般为可扩展单元格或集合表达式containNull 缺省为true,表示对null元素也进行计数;false则相反

    返回值: 整数


    示例:

    例1:count(A1:B10,false) 以当前格为基格计算A1和B10之间总共有几个单元格,如果单元格的值为空则不进行计数

    例2:count(A1[1]:B10[3])计算A1扩展出来的第一个格和B10扩展出来的第三个格之间总共有几个单元格

    例3:count(arg1) 其中arg1是参数组,统计arg1中有几个数据

    例4:count(B1{}) 表示求得当前主格扩展区域内所有扩展后的B1单元格的个数

    例5:count(B1{`0}{}) 表示求得根坐标下所有扩展后的B1单元格的个数


    9.disp()

    函数说明: 取单元格的显示值

    语法: disp( cell )

    参数说明: cell 单元格

    返回值: 字符型


    示例:

    例1:if(like(disp(A1), "中国*"),true,false) 表示如果A1单元格的显示值含有中国的字样,返回true,否则返回false。


    10.ds()

    函数说明: 按名称取得数据集对象,本函数用于动态改变表达式的数据集对象,用法很灵活,但是性能较低,须慎用。

    语法: ds( stringExp )

    参数说明: stringExp 数据集的名称

    返回值: 数据集对象

    说明: 本函数的返回值是表达式的一个元素,不能作为单元格的数据值,必须经过二次运算。


    示例:

    例1:ds("ds1").select(#0) 表示取出ds1数据集中的记录行号集合


    11.eval()

    函数说明: 动态解析并计算表达式

    语法: eval( StringExp ) eval( StringExp, SubRptExp ) eval( StringExp, DataSetExp )

    参数说明: StringExp 待计算的表达式串 SubRptExp 嵌入式子报表对象,一般是含有子报表的单元格 DataSetExp 数据集对象,一般是ds函数 返回值: 表达式的结果值,数据类型由表达式决定


    示例:

    例1:eval( "1+5" ) 返回6

    例2:eval("B2+10", A1) 其中A1为嵌入式子报表,表示计算A1子报表中的B2+10

    例3:eval("salary+100", ds("ds1")) 表示计算数据集ds1中salary加100


    12.if()

    函数说明: 根据布尔表达式的不同计算结果,返回不同的值。本函数从左到右计算,先出现的布尔表达式先算,如果出现为true的表达式,则返回相应的结果,后面的不再计算。如果没有一个布尔表达式为true,而且有缺省值表达式,则返回缺省值,否则返回null。

    语法: if(boolExp1,valueExp1{,boolExp2,valueExp2 {,boolExp3,valueExp3 {, {defaultExp}}}})

    参数说明: boolExp(n) 布尔表达式,如果结果为真,则返回对应的值表达式计算结果 valueExp(n) 值表达式,和布尔表达式一一对应 defaultExp 缺省值表达式,如果所有布尔表达式结果都为假,则返回本表达式计算结果

    返回值: 数据类型不定,由valueExp(n)的运算结果决定。


    示例:

    例1:if(value()>100,-65536,value()<=100 and value()>80,-16776961,-14336 ) 表示当前格的值大于100时,返回-65536颜色值,当前格的值小于等于100且大于80时,返回-16776961颜色值,否则返回-14336颜色值


    13.inputValue()

    函数说明: 取得表达式的填报值

    语法: inputValue(Exp)

    参数说明: Exp 表达式

    返回值: 该表达式对应的填报值。


    14.list()

    函数说明: 获得一个枚举的数据集合

    语法: list(valueExp1{,valueExp2{,valueExp3{,……}}})

    参数说明: valueExp(n) 可以是常数或表达式,也可以是集合表达式

    返回值: 一组枚举数据的集合


    示例:

    例1:list(1,3,5,7,9)

    例2:list("abc","def","ghj")

    例3:list(arg1,to(1,3),"a","b","c") 假设arg1是个整数组,其值为7,8,9,那么该表达式的结果值为{7,8,9,1,2,3,"a","b","c"}


    15.list2()

    函数说明: 本函数与list函数唯一的区别是,本函数对内部的list不展开

    语法: list2 (valueExp1{,valueExp2{,valueExp3{,……}}})

    参数说明: valueExp(n) 可以是常数或表达式,也可以是集合表达式

    返回值: 一组枚举数据的集合


    示例:

    例1:list2(1,3,5,7,9)

    例2:list2("abc","def","ghj")

    例3:list2(arg1,to(1,3),"a","b","c") 假设arg1是个整数组,其值为7,8,9,那么该表达式的结果值为{list(7,8,9),list(1,2,3),"a","b","c"}


    16.map()

    函数说明: 显示值对照表函数,从对照表中找出当前单元格对应值的显示值,没有则返回null

    语法: map(valueListExp, displayListExp)

    参数说明: valueListExp 真实值列表,可以是可扩展单元格或结果为集合列表的表达式 displayListExp 显示值列表,可以是可扩展单元格或结果为集合列表的表达式 真实值列表和显示值列表一一对应

    返回值: 字符型,和当前格真实值对应的显示值


    示例:

    例1:map(to(1,3),list("男","女","不定"))

    例2:map(arg1,arg2) 其中arg1为1,2,3组成的参数组,arg2为"男","女","不定"组成的字符串组

    例3:map(list(1,2,3),list("男","女","不定"))


    17.max()

    函数说明: 对可扩展单元格或集合表达式求最大值

    语法: max(expression) max(cellExp,exp)

    参数说明: expression 需要求最大值的单元格或表达式,一般为可扩展单元格或集合表达式 cellExp 单元格或单元格集合,以cellExp里的单元格为当前格计算表达式exp exp 表达式

    返回值: 数据类型不定,由expression的计算结果决定


    示例:

    例1:max(A1:A10) 求出单元格A1至A10之间的最大值

    例2:max(arg1) 其中arg1是参数组,求出arg1中的最大值

    例3:max(B1{}) 表示求得当前主格扩展区域内所有扩展后的B1单元格的最大值

    例4:max(B1{`0}{}) 表示求得根坐标下所有扩展后的B1单元格的最大值

    例5:max(A1[`0]{},B1+C1) 计算分别与每个A1相对应的B1、C1的和的最大值


    18.maxc()

    函数说明: 返回输入的单元格(格集)中值最大的单元格组成的List,如果存在多个单元格的 值相等且最大,则这些格都会被返回。

    语法: maxc(cellExp1{,cellExp2{,......}})

    参数说明: cellExp1 单元格(格集)或单元格(格集)表达式

    返回值: 单元格List


    示例:

    例1:maxc(A1,A2,A3,A4) 求出单元格A1至A4之间值最大的单元格组成的列表

    例2:maxc(A1{},A2) 求A1扩展出来的所有单元格和A2中值最大的单元格组成的列表


    19.maxwidth()

    函数说明: 求当前列中所有非合并格的显示串的最大字符长度 (注意:ASCII码大于255的字符长度为2)

    语法说明: maxwidth()

    返回值: 整数


    示例: 一般用于列首格中,动态控制列宽

    例1:在列首格的单元格宽属性中写入8*maxwidth(),表示动态调整当前列宽为单元格显示值最大字符长度*8个像素


    20.min()

    函数说明: 对可扩展单元格或集合表达式求最小值

    语法: min(expression) min(cellExp,exp)

    参数说明: expression 需要求最小值的单元格或表达式,一般为可扩展单元格或集合表达式 cellExp 单元格或单元格集合,以cellExp里的单元格为当前格计算表达式exp exp 表达式

    返回值: 数据类型不定,由expression的计算结果决定


    示例:

    例1:min(A1:A10) 求出单元格A1至A10之间的最小值

    例2:min(arg1) 其中arg1是参数组,求出arg1中的最小值

    例3:min(B1{}) 表示求得当前主格扩展区域内所有扩展后的B1单元格的最小值

    例4:min(B1[`0]{}) 表示求得根坐标下所有扩展后的B1单元格的最小值 例5:min(A1[`0]{},B1+C1) 计算分别与每个A1相对应的B1、C1的和的最小值


    21.minc()

    函数说明: 返回输入的单元格(格集)中值最小的单元格组成的List,如果存在多个单元格的值相等且最小,则这些格都会被返回。

    语法: minc(cellExp1{,cellExp2{,......}}) 参数说明: cellExp1 单元格(格集)或单元格(格集)表达式

    返回值: 单元格List


    示例:

    例1:minc(A1,A2,A3,A4) 求出单元格A1至A4之间值最小的单元格组成的列表

    例2:minc(A1{},A2) 求A1扩展出来的所有单元格和A2中值最小的单元格组成的列表


    22.nvl()

    函数说明: 根据第一个表达式的值是否为空,若为空则返回指定值

    语法: nvl( valueExp1, valueExp2 )

    参数说明: valueExp1 需要计算的表达式,其结果不为空时返回其值 valueExp2 需要计算的表达式,当valueExp1结果为空时返回此值

    返回值: valueExp1或valueExp2的结果值


    示例: 

    例1:nvl(A1,"") 表示当A1为空时,返回空串,否则返回A1 例2:nvl(value(),0) 表示当当前格为空时返回0,否则返回当前格的值


    23.plot()

    函数说明: 计算一个值在一个完全划分中的位置

    语法: plot( valueExp, ListExp{, eqExp}{, ascExp} )

    参数说明: valueExp 返回值的表达式,值可以是字符串、数值、日期、时间等 ListExp 返回同valueExp数据类型相同的数组,要求其中元素从小到大排列 eqExp 返回布尔值的表达式,缺省为false,为false表示与ListExp元素比较时不包含等于 ascExp 返回布尔值的表达式,缺省为true,即表示ListExp中元素从小到大排列,否则为从大到小排列;rootGroupExp    是否root数据集表达式

    特别说明:

    ascExp为true(即listExp从小到大排列)时,eqExp为true时,与元素比较时采用<=,eqExp为false时,采用<;ascExp为false(即listExp从大到小排列)时,eqExp为true时,与元素比较时采用>=,eqExp为false时,采用>

    返回值:

    整数组,代表记录按值段分组后组的顺序,如list(0,1,2,3)代表第一组,第二组,第三组,第四组因此,定义完单元格数据值表达式后还需要定义显示值表达式,比如第一组代表不及格,第二组代表及格等等


    示例:

    例1:plot( 0, list(0,10,100) ) 返回1,第一个集合为<0,不包含0,第二个集合为>=0且<10,所以0落在了第二个集合中,集合的编号从0开始起编,依次为0,1,2,3,所以结果为1

    例2:plot( 0, list(0,10,100),true,true) 返回0

    例3:plot( 10, list(0,10,100), false ) 返回2

    例4:plot(10,list(100,10,0),true,false) 返回1


    详细说明: 划分是指将一个集合划分成几个集合,如数组{0,10,100}在eqExp返回false的情况下,将整数集或实数集划分成4个集合,依次分别是<0、<10(此集合中元素必定>=0)、<100(此集合中元素必定>=10)及其它(即>=100);在eqExp返回true的情况下将整数集或实数集划分成4个集合,分别是<=0、<=10(且>0)、<=100(且>10)及其它(即>100);对于数组{100,10,0},eqExp为false时也划分成4个集合,分别为>100,>10(且<=100),>0(且<=10)及其它(即<=0); eqExp为true时则为>=100,>=10(且<100),>=0(且<10)及其它(即<0)


    24.query()

    函数说明: 执行sql语句,返回结果数据集合,只能返回单列数据,如果sql语句中有多个字段,则返回第一个字段的结果值

    语法: query(sqlStatement{,arg1{,arg2{,arg3{,……}}}})

    参数说明: sqlStatement 合法的sql语句 arg(n) sql语句的参数,可以是常数也可以是表达式

    返回值: 一组数据的集合,数据类型由sql语句的第一个选出字段决定 


    示例:

    例1:query("select name from employee where sex=?","1") 表示从employee表中选出sex="1"的记录,返回其name字段值


    25.query2()

    函数说明: 执行sql语句,返回结果数据集合,只能返回单列数据,如果sql语句中有多个字段,则返回第一个字段的结果值。和query()函数的差别在于多了第一个参数,第一个参数用于制定数据源名称,通过他可以实现不同单元格从不同数据源获取数据

    语法: query2(dbname, sqlStatement{,arg1{,arg2{,arg3{,……}}}})

    参数说明: dbname 数据库逻辑名,为null表示缺省数据库 sqlStatement 合法的sql语句 arg(n) sql语句的参数,可以是常数也可以是表达式

    返回值: 一组数据的集合,数据类型由sql语句的第一个选出字段决定


    示例: 

    例1:query2("demo","select name from employee where sex=?","1") 表示从demo数据库的employee表中选出sex="1"的记录,返回其name字段值


    26.rgb()

    函数说明: 将红、绿、蓝、透明度转换成颜色值

    语法: rgb( redIntExp, greenIntExp, blueIntExp{, alphaIntExp} )

    参数说明: redIntExp 0-255之间的整数表达式,表示红色 greenIntExp 0-255之间的整数表达式,表示绿色 blueIntExp 0-255之间的整数表达式,表示蓝色 alphaIntExp 0-255之间的整数表达式,表示透明度, 0表示完全透明,255表示完全不透明,其他数值呈现不同程度的透明度,缺省值为255

    返回值: 64位的长整数


    示例:

    例1:rgb(123,123,123) 返回:-8684677

    例2:rgb(123,123,123,123) 返回:2071690107

    例3:rgb(123,123,123,255) 返回:-8684677

    例4:rgb(123,123,123,0) 返回:8092539


    27.row()

    函数说明: 取得当前单元格所在行的行号

    语法: row({cellExp})

    参数说明: cellExp 单元格表达式(不写表示当前单元格)

    返回值: 整数


    示例: 

    在第三行单元格中写入=row(),返回值为3,如果第三行存在纵向扩展格,则行号依次改变。


    28.seq()

    函数说明: 取得指定扩展单元格的同源号,即扩展格扩展后,将此单元格的同源格按行(列)号从小到大排序后,此单元格所在的序号。

    语法: seq({cellExp})

    参数说明: cellExp 单元格表达式,必须返回扩展格

    返回值: 整数


    举例:

    假设A1是扩展格,B1的主格为A1,在B1单元格中写入=seq(A1),则扩展后B1的值将依次从1变到A1扩展出来的单元格的数目。


    29.sort()

    函数说明: 对数组进行排序 语法: sort( arrayExp{, boolExp} )

    参数说明: arrayExp 数组表达式,譬如group,select,list等函数 boolExp 布尔表达式,true表示对数组按升序排列,否则降序

    返回值: 数组,元素数据类型由参数1决定


    示例:

    例1:sort({5,2,3,4},true) 返回值为{2,3,4,5}

    例2:sort({5,2,3,4}) 返回值为{5,4,3,2}


    30.sum()

    函数说明: 对可扩展单元格或集合表达式进行求和

    语法: sum(expression) sum(cellExp,exp)

    参数说明: expression 需要被求和的单元格或表达式,一般为可扩展单元格或集合表达式 cellExp 单元格或单元格集合,以cellExp里的单元格为当前格计算表达式exp exp 表达式

    返回值: 实数或者字符型,由被汇总的单元格数据类型决定


    示例:

    例1:sum(A1:A10) 求出单元格A1至A10的合计值,被统计单元格可以是数值型也可以是字符型

    例2:sum(arg1) 其中arg1是参数组,求出arg1中所有元素的合计值

    例3:sum(B1{}) 表示求得当前主格扩展区域内所有扩展后的B1单元格的合计值

    例4:sum(B1[`0]{}) 表示求得根坐标下所有扩展后的B1单元格的合计值 例5:sum(A1[`0]{},B1+C1) 计算分别与每个A1相对应的B1、C1的和的合计值


    31.throwe()

    函数说明 抛出一个ReportError异常

    语法: throwe({msg})

    参数说明: msg 异常信息字符串


    举例:

     throwe("单元格值有误") 抛出一个异常,显示信息为“单元格值有误”


    32.to()

    函数说明: 生成一组连续的整数数据

    语法: to(startExp,endExp{,stepExp})

    参数说明: startExp 整数数据开始的表达式 endExp 整数数据结束的表达式 stepExp 整数数据步长的表达式

    函数示例: to(1,5)=list(1,2,3,4,5) to(1,5,2)=list(1,3,5) to(-5,-10,-2)=list(-5,-7,-9) to(-10,-8)=list(-10,-9,-8)


    33.value()

    函数说明: 取得当前单元格的值 语法: value()

    返回值: 当前单元格的值


    34.valueat()

    函数说明: 根据指定位置返回数组或者集合表达式中的某一个元素

    语法: valueat(arrayexp,suffixExp)

    参数说明: arrayexp 数组或者集合表达式 suffixExp 整数,用于指定返回集合中的第几个元素

    返回值: 集合中的一个元素,数据类型由集合中的元素类型决定


    示例:

    例1:valueat(to(5,8),2) 返回值为:7

    例2:valueat({"a","b","c"},2) 返回值为:"c"


    展开全文
  • NPOI1.25之后的版本已经内置有IsCellDate函数... NPOI 1.25 之后,判断单元格是否为日期的函数为IsCellDateFormatted,在NPOI.SS.UserModel.DateUtil下; if (DateUtil.IsCellDateFormatted(sheet.GetRow(0).GetCell...

    NPOI1.25之后的版本已经内置有IsCellDate函数来判断是否是日期,所以本文就提供给大家参考与学习。

    NPOI 1.25 之后,判断单元格是否为日期的函数为IsCellDateFormatted,在NPOI.SS.UserModel.DateUtil下;

                if (DateUtil.IsCellDateFormatted(sheet.GetRow(0).GetCell(0)) == true)
                {
                    Console.Write(sheet.GetRow(0).GetCell(0));
    
                }

    IsCellDateFormatted 返回的是一个布尔值,如果是时间类型并且正确时返回true,不是时间类型则会出现异常,当然你填写如2月31日之类的时间的时候,也会按照异常容错处理。

    转载于:https://www.cnblogs.com/yzb305070/archive/2012/05/25/2518066.html

    展开全文
  • VBA 单元格基本操作 - 判断

    千次阅读 2020-08-05 23:21:43
    一、提示用户输入 Sub SetValue() Sheets("sheet3").Range("a1") = InputBox("输入一个数字") End Sub 运行后就会弹出个警告框,提示用户输入内容,输入后就会在A1单元格显示了,但是也存在一个问题,就是取消...

    继续讲讲单元格的操作

    一、提示用户输入值

    Sub SetValue()
        Sheets("sheet3").Range("a1") = InputBox("输入一个数字")
    End Sub

    运行后就会弹出个警告框,提示用户输入内容,输入后就会在A1单元格显示了,但是也存在一个问题,就是取消后呢,原来在A1单元格的内容就会被清空。

    所以改良一下,也把“输入数字这个功能再完善一下”。

    Sub SetValue()
        Dim myInput As Variant
        myInput = InputBox("输入一个数字")
        If myInput <> "" Then
            If IsNumeric(myInput) Then
                Sheets("sheet3").Range("a1") = myInput
            Else
                MsgBox "输入的不是数字"
            End If
        Else
            MsgBox "输入的内容为空值"
        End If
    End Sub

     

    在判断是否是数字上,如果用WorksheetFunction.IsNumber判断可能会出错。用户在输入123后,WorksheetFunction.IsNumber仍然会识别成文本格式。经过资料查询,解释是这样的:

    WorksheetFunction.IsNumber:函数中的数值参数是无法转换的。例如,大部分其他函式中其中一个数字是必要,文字值19会转换的数字19。不过,在公式中ISNUMBER(“19”)、19不会转换文字值,且IsNumber函数会传回False。

    IsNumeric:如果在整个表达式被视为一个数字就为真,否则,它会传回False。如果_表达式_为日期表达式IsNumeric会传回False。

    所以咱们就知道为什么IsNumeric用来判断用户输入是否数字可以,而WorksheetFunction.IsNumber不行啦。

     

    二、在空值输入内容

    在空值输入内容的第一步当然是确定空值的位置啦,运行后跳转到空值的地方进行输入。我这里主要用到昨天的Range.End(xldown)来确定下一行的空值。

    Sub SetBlankValue()
        Dim rowNum As Integer
        rowNum = Range("a1").End(xlDown).Row + 1
        Range("a" & rowNum).Select
    End Sub

     

     

    是不是很简单啦。

     

    三、计算选中单元格 数量

    MsgBox Selection.Count

    框柱单元格后运行就出来了,一句话完事儿~

    如果要有选择多个选区,想知道多个选取的数量,用以下方式

    MsgBox Selection.Areas.Count

     

    四、有效遍历选区

    有效遍历选区一般是对选区内有值的进行遍历操作,不然大量空值存在就很浪费时间,下面是对用户框住的内容进行判断,小于0的就成黄色,大于等于0的就蓝色。

    Sub BianLi()
        Dim cell As Range
        If TypeName(Selection) <> "Range" Then Exit Sub
        Application.ScreenUpdating = False
        For Each cell In Selection
            If cell.Value < 0 Then
                cell.Interior.Color = RGB(255, 255, 0)
            Else
                cell.Interior.Color = RGB(0, 255, 255)
            End If
        Next
    End Sub

    框选后确实变色了,但是呢如果选中整行整列的话,会比较慢,工作表有个叫UsedRange的方法,官方解释【返回一个**Range** 对象, 该对象代表指定工作表上的所用区域。】也就是咱们用了多少单元格意思。输出个已使用单元格数量试试

    MsgBox (Sheets(1).UsedRange.Count)

    然后我们就可以根据用户框住的区域和这个UsedRange区域进行交叉匹配,匹配到了的说明有值,需要进行运算

    Sub BianLi2()
        Dim cell As Range, rng As Range
        If TypeName(Selection) <> "Range" Then Exit Sub
        Application.ScreenUpdating = False
        Set rng = Application.Intersect(Selection, ActiveSheet.UsedRange)
        For Each cell In rng
            If cell.Value < 0 Then
                cell.Interior.Color = RGB(255, 255, 0)
            Else
                cell.Interior.Color = RGB(0, 255, 255)
            End If
        Next
    End Sub

    结果和上图相似,但是速度会稍稍快了点,但是也带来一个问题,如果用户点了空白区域,既没有内容,也没有使用,所以可能会报错哟,所以还需要改进一下。

    此刻需要用表达式。Range.specialcells(Type, Value)来区分一下,该函数返回一个Range对象, 该对象代表与指定类型和值匹配的所有单元格。第一个参数是要包含的单元格,必填;第二个参数是可选的,写上要返回哪些类型的单元格

    所以咱们把有值的Range用这个函数拆成2部分,数字的,就做判断,不是数字的,就不管了

    Sub BianLi3()
        Dim numCells As Range, cell As Range
        If TypeName(Selection) <> "Range" Then Exit Sub
        Application.ScreenUpdating = False
        
        'xlConstants 意思是单元格是值,xlNumbers意思就是数字
        Set numCells = Selection.SpecialCells(xlConstants, xlNumbers)
       
        For Each cell In numCells
            If cell.Value < 0 Then
                cell.Interior.Color = RGB(255, 255, 0)
            Else
                cell.Interior.Color = RGB(0, 255, 255)
            End If
        Next
    End Sub

     

     

     

     

    展开全文
  • 数据类型、实际与显示单元格支持的操作单元格样式:行高列宽、隐藏行列、自动换行、上下标、文字竖排、大文本字段分页时断开、标识说明、格式刷单元格Web属性:web显示、web编辑风格、控件实际与显示、...
  • VBA合并单元格(tmpstr = tmpstr & " " & Cells(i, j))如果碰到#N/A就会报错,提示类型不匹配,如下图所示: 实际上,不仅仅是#N/A,其它的错误标识(如#VALUE!、#DIV/O!等等)也会报同样的错误。...
  • 使用xlrd模块读取excel某行数据,改行数据显示对应数据类型以及(XF:15)等,无法直接使用。 测试数据如下: 错误方法: import xlrd wbook = xlrd.open_workbook('test2.xls', formatting_info=True) xsheet =...
  • 原标题:平均计算函数Average、Averagea、AverageIfs、Trimmean 在数据的统计分析中,经常要计算平均,常用的函数有Average,但Average函数并不能满足数据统计分析的需求,所以除了用Average函数计算平均外,...
  •  return "未知类型 ";   }   }else{  return "";  }  } 下面这个是自己修改的 public String getValue(XSSFCell cell) { if (null != cell) { switch (cell.getCellTypeEnum()) { case NUMERIC: ...
  • 出国留学网小编为你整理“2017...功能:IF函数具有判断的能力,通过对作为第一参数的条件进行判断,根据判断结果的真假执行不同的计算,返回不同的结果。IF函数属于逻辑函数。格式:IF(logical-test,value-if-tr...
  • layui table组件edit编辑事件获取单元格改之前的 table.on('edit(demo)',function (obj) { // 获取单元格编辑之前td的选择器 var selector = obj.tr.selector+' td[data-field="'+obj.field+'"] div'; // ...
  • 在Excel的函数运用中,经常会吧多个函数一起结合着使用方便计算出数据的,接下来请欣赏学习啦小编给大家网络收集整理的excel if函数和and函数结合的用法。关于IF函数的语法简介语法IF(logical_test,value_if_true,...
  • IF函数的用法大家都很熟悉了,但是IF\AND\OR 混合使用,效果会更快捷方便。比如下图学生成绩表,需要找出四种学生类型:数学及格的、三科都及格、任意一科及格,男生任意一科及格的...IF函数的第一个参数是判断条...
  • 数据类型判断函数 1.isEmpty() 函数说明: 判定表达式运算的结果列表中的元素个数是否为0,或者运算的结果是否为null 语法: isEmpty(exp) 参数说明: exp 表达式 返回值: 布尔型 2.isdate() 函数...
  • 1、DAVERAGE用途:返回数据库或数据清单中满足指定条件的列中数值的平均。语法:DAVERAGE(database,field,criteria)参数:Database 构成列表或数据库的单元格区域;Field指定函数所使用的数据(所用项目);Criteria...
  • 单元格类型定义了在单元格中呈现的信息的类型,以及这种信息如何显示,用户如何与其进行交互。单元格类型可以被赋给单个的单元格,整行或者整列。 用户可以使用两种不同的单元格类型对表单中的单元格进行设置: 一种...
  • 一、统一样式 <i-table size="large" :columns="columns1" :data="data1"></i-table> columns: [ { title: '项目类型', key: 'type', minWidth: 80, render: (h, ...
  • 今天还是讲讲单元格操作 一、删除空行 如果是上面的表格要删除空行的话,我们想到的是先删掉第1行,再第2行,再第3行……但是对于程序来说,删完第1行后,第2行就变成了第1行后面就会出错,所以我们先从后面...
  • Excel中的IF判断函数

    2019-07-19 14:49:45
    1.IF函数 在Excel中,使用IF函数判断取值,例如当C3单元格的取值为“ 测试 ”时,函数值就为"H",否则的话,函数值就为"W". fx = IF(C3="测试","H","W") ...
  • (当然也可以使用别的方式,但别的方式不好实现:当该单元格值不满足条件时,锁定整个gridview,除该单元格之外的位置都不允许输入,即将焦点锁定在这一个单元格)。 1、首先将要验证的列设置为...
  • 广告关闭腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元!... 使用循环判断是合并单元格还是普通单元格,并将合并单元格中的首行赋值给合并单元格...
  • excel如何读取B列的数据类型和b列里的数据=sum(b:b,"工具",a:a)EXCEL如何将表格的数据类型分类提取出来(提取筛选的数据类型)把C列的数据复制,到右边找一列空的列,粘贴进去。然后选中右边粘贴过来的这列、点顶部的...
  • 使用C#操作EXCEL时,判断一个单元格是否为空的方式:  Excel.Range ran = (Excel.Range) xSheet.Cells(1,1);    1)  if(ran.Value2 != null) //在一个表格中这一句是可以正常运行的,但在处理另一个表格时...
  • PHPExcel 取Excel单元格中公式的

    千次阅读 2016-09-20 10:56:05
  • 确定单元格是否含有文本

    千次阅读 2005-12-19 14:07:00
    1:判断单元格属性相关的函数IS 类函数这些函数,概括为 IS 类函数,可以检验数值的类型并根据参数取值返回 TRUE 或 FALSE。例如,如果数值为对空白单元格的引用,函数 ISBLANK 返回逻辑 TRUE,否则返回 FALSE。...
  • PAGE / NUMPAGES CHAPTER 04 Excel中各函数功能解析 一函数类别与功能 函数类别 功能 逻辑函数 常用于判断真假或进行复合检验 日期与时间函数 通过使用日期与时间函数可以在公式中分析并处理日期和时间 数学与...
  • 单元格中输入计算公式时,可以用IFERROR做个容错的判断,例如FIND函数查找字符串,当查不到结果就会报错,此时就可以结全IFERROR函数使用。举例如下:=IFERROR(FIND("和平街道",E2),0)上述公式解析:当FIND("和平...
  • 基本使用(1)查看公式(2)输入包含内置函数的公式(3)公式深度介绍(4)公式运算符(5)公式特点4.单元格地址引用5.单列变多列-地址引用6.多列转换为一列7.错误利用8.追踪公式利用9.追踪错误 Exceld的公式 1....
  • excel 用公式查找单元格

    千次阅读 2018-11-06 10:12:11
    简介 今天要介绍的是,根据查找单元格内容来进行类别匹配,如图所示 MATCH函数 简介 匹配函数,指返回指定数值在指定数组区域中的位置。...查找文本时,函数 MATCH 不区分大小写字母。 语法: MATCH(l...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 13,651
精华内容 5,460
关键字:

判断单元格值的类型的函数