【待】excel使用记录

最近由于工作需要,使用excel,之前不太熟悉这个工具,趁着还有印象,顺手记录下学习使用的成果。

1 首先是使用过的excel自带函数

   datedif(a,b,c):这是计算两个日期之间的差值。b-a是计算结果。c是输出单位,"d"表示a,b两个日期间相差多少天,"m"是月,"y"是年。

   today():获取当天的日期。

   if(a,b,c):a是条件,b是如果条件a是true,表达式输出的结果;c是结果为false的结果。

   indirect("a"):获取指定单元格的值,比如单元格地址是A1,indirect(“$A$1”)

   cell("address"):获取当前活动的单元格地址

   countif(a,b):a为range范围,b是统计条件,最后结果为搜索范围为a,满足条件b的个数。比如countif(A1:A10,"1"),A1到A10中,结果是1的行数。

   countifs(a1,b1,a2,b2.....):满足多条件的统计函数。结果为a1中满足条件b,且a2中满足条件b2...的个数。

   small()


2 涉及到的组合函数完成一定的功能

   多if条件:if(a,b,if(a,b,c)) 例如if(a<0,"",if(b<0,“”,a*b)),if可以和许多函数进行配合进行逻辑判断

  index+small 函数完成筛选复制:http://www.excelpx.com/thread-165563-1-1.html  这个帖子写的很全 

        =INDEX(结果列,SMALL(IF(条件,ROW满足条件的行号,较大的空行行号),ROW(1:1)))&""

【原理】1、数组运算;2、空单元格与空文本合并。
【特点】得到的结果是文本。
【实例】如图:筛选张三的领用记录(条件是E1单元格的“张三”)。 

1.
=INDEX(B:B,SMALL(IF(A$2:A$8=E$1,ROW(A$2:A$8),4^8),ROW(1:1)))&""

复制公式或代码

【解析】:对照“必杀技”,多数人已可以瞧出一点端倪来。
1、条件模块:IF(A$2:A$8=E$1,ROW(A$2:A$8),4^8)
表示如果A2:A8的姓名等于E1的“张三”,则返回A2:A8的行号,否则返回4^8,即65536。
IF(如果,则,否则——这语言不难读吧
条件模块经过数组运算,因为A2、A5、A8满足条件,所以返回的是行号数组{2;65536;65536;5;65536;65536;8}。

2、排序模块:SMALL(IF,ROW(1:1))
公式的第1行,ROW(1:1)返回{1},在第2行返回{2}……因此,利用SMALL+ROW可以将条件模块返回的行号数组从小到大依次排序得出。当然,此例中SMALL({2;65536;65536;5;65536;65536;8},1)得到的是2,第2小的是5,第3小的是8,第4小及以后都是65536。

3、引用模块:INDEX(引用列,SMALL得到的行号)
=INDEX(B:B,2)——引用B2,=INDEX(B:B,65536)——引用B65536

4、容错模块:&""
当公式到了第4行,3个满足条件的记录都已经找出来,此时公式是=INDEX(B:B,65536)&“”
因为Excel2003的最大行数是65536行,而在这一行中,一般不会有人输入数据,是空单元格。因此,利用空单元格与空文本合并返回空文本的特性,将超出结果数量的部分不显示出来。

   

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值