绿色圃中小学教育网
标题:
excel函数应用专题帖
[打印本页]
作者:
桂馥兰香
时间:
2009-9-19 21:43
标题:
excel函数应用专题帖
一、实例教你学Excel函数排序与筛选 Execl本身具有很方便的排序与筛选功能,下拉“数据”菜单即可选择排序或筛选对数据清单进行排序或筛选。但也有不足,首先无论排序或筛选都改变了原清单的原貌,特别是清单的数据从其它工作表链接来而源数据发生变化时,或清单录入新记录时必须从新进行排序或筛选。其次还有局限,例如排序只能最多对三个关键字(三列数据)排序,筛选对同一列数据可用“与”、或“或”条件筛选,但对不同列数据只能用“与”条件筛选。
例如对某张职工花名册工作簿,要求筛选出年龄大于25岁且小于50岁或年龄大于50岁或小于25岁都是可行的,如同时要求性别是男的或女的也是可行的。但要求筛选出女的年龄在22岁到45岁,男的年龄在25岁到50岁时Execl本身具有的筛选功能则无能为力了。再者排序与筛选不能结合使用,即不能在排序时根据条件筛选出来的记录进行排序。例如有一张职工资料清单,其中有的职工已经退休,对在职职工的年龄进行排序时无法剔除已退休职工的数据。
本文试图用Execl的函数来解决上述问题。
一、用函数实现排序
题目:
如有一张工资表,A2:F501,共6列500行3000个单元格。表头A1为姓名代码(1至500)、B1为姓名、C1为津贴、D1为奖金、E1为工资、F1收入合计。现要求对职工收入从多到少排序,且在职工总收入相同时再按工资从多到少排序,在职工总收入和工资相同时再按奖金从多到少排序,在职工职工总收入和工资、奖金相同时再按津贴从多到少排序。
方法:
G1单元格填入公式
“=if(F2=0,10^100,INT(CONCATENATE(999-f2,999-e2,999-d2,999-c2)))”,
CONCATENATE 是一个拼合函数,可以把30个以下的单元的数据拼合成一个数据,这些被拼合的数据之间用逗号分开。用f2、e2等被拼合的数据用999来减,是为了使它们位数相同。(假定任何一个职工的总收入少于899元)。被拼合成的函数是文本函数,CONCATENATE与INT函数套用是为了使文本转换为数字。最外层的if函数是排序时用来剔除不进行排序的记录,在本例中指收入为零的记录。(在上文提到的职工年龄排序,则公式改为“if(f2="退休", 10^100,.....)”,即剔除了退休职工。)
第二步把G1单元格的公式拖放到G500单元格(最简便的方法是点击G1单元格后向G1单元格右下方移动鼠标,见到黑十时双击鼠标就完成了G1到G500的填充)。
第三步在在H2单元填入公式“=MATCH(SMALL(G:G,ROW(A1)),G:G,0)”与第二步一样拖放到H501单元格。此公式实际上是把三列公式合成一列公式,ROW(A1)即为A1的行数是1,随着向下拖放依次为2、3、4...,SMALL(G:G,ROW(A1))为 G列中最小的数随着向下拖放依次为第2、第3、..小的数,MATCH(SMALL(G:G,ROW(A1)),G:G,0)即为G列各行的数据中最小、第2、第3小等的数据在第几行。
第四步把A1至F1单元格的表头复制到I1至N1单元格,在I2单元格输入公式“=INDEX($A$2:$F$501,$H2, COLUMN(A$1))”INDEX函数是一个引用函数,即把$A$2:$F$501单元格列阵第$H2行第COLUMN(A$1)列的数据放入I2单元格。然后把I2单元格的公式拖放到N2单元格,点击N2单元格后向N2单元格右下方移动鼠标见到黑十时双击鼠标就完成了I2到N501单元格的填充到此全部完成。
以上叙述看似繁杂实际非常简单,只要把A1至F1的表头复制到I1至N1单元格,再分别在G1、H2、I2单元格输入公式然后向下拖放,即使对EXCEL应用不熟练的同志一分锺内便能完成。
对上述程序稍作变化还可得到更多用度。上面例子数据是从大到小排列的,如H列的函数中的SMALL改为LARGE,上面例子数据就从小到大排列了。如H2单元格的公式改为“=IF(O1=1,MATCH(SMALL(G:G,ROW(A1)),G:G,0),MATCH(LARGE(G: G,ROW(A1)),G:G,0))”并把H2单元格的公式向下拖放。这样在O1单元格输入1上面例子数据是从大到小排列的,O1单元格输入1以外的数上面例子数据就从小到大排列了。
如在H列前插入若干列,如插入一列,则现在的H列输入类似G列的公式,例如“=if(F2=0,10^100,d2)”,现在的I列的公式改为“=IF(P1=1,MATCH(SMALL(G:G,ROW(A1)),G:G,0),MATCH(SMALL(H:H,ROW(A1)),H:H,0)))”即在P单元格输入1以外的值就实现了按奖金大小排序.这样只要通过改变P1(原来的O1单元格)单元格内容的改变就能立即得到按不同要求的排序。
二、用函数实现筛选
题目:
如有一张职工名册表,A2:F501,共6列500行3000个单元格。表头A1为姓名代码(1至500)、B1为姓名、C1为性别、D1 为年龄、E1为学历、F1职称。现要求对职工的性别、年龄、学历、职称进行交错筛选,例如要求在同一张表上筛选出1、女的年龄在22岁到45岁,男的年龄在25岁到50岁,2、女博士,3、男博士后。
方法:
第一步在G2单元格输入公式”=IF(OR(AND(C2="女",D2>=22,D2<=45),AND(C2="男",
D2>=25,D2<=50)),ROW(A1),0)“,在H2单元格输入公式”=IF(AND(C2="女",E2="博士"),
ROW(B1),0)“,在I2单元格输入公式”=IF(AND(C2="男",E2="博士后"),ROW(B1),0)“。在J2单元格输入公式“=IF(K$2=1,LARGE(G:G,ROW(A1)),IF(K$2=2,LARGE(H:H,ROW(A1)),
IF(K$2=3,LARGE(I:I,ROW(A1)),0)))”然后用上述提到的方法向下拖放。G、H、I列的公式的含义就是凡符合筛选条件的行记录下行号否则为零,J列的公式的含义根据K2的数值选择G、H、I中的一列进行排序并把不合条件的行除去。
第二步在K1单元格输文字”筛选选择”,A1到F1表头复制到L1到Q1,在L2单元格输入
公式“=IF($J2=0,0,INDEX($A$2:$F$501,$J2,COLUMN(A$1)))”,然后向右拖放到Q2,再向下拖放。INDEX函数的含义上文已说明。
第三步在P1单元格输入1或2或3便可实现上述三种筛选。
作者:
桂馥兰香
时间:
2009-9-19 21:45
二、用Round函数让四舍五入变的更精确
在前面,我们介绍了,利用INT函数来构造四舍五入函数的方法,但是,有时候我们会遇到更多小数位的四舍五入,用INT函数构造就会有些吃力了,Excel的Round函数可以帮助我们。Round函数的作用是返回某个数字按指定位数取整后的数字。语法为“ROUND(number,num_digits)”,其中Number是需要进行四舍五入的数字;Num_digits为指定的位数,按此位数进行四舍五入,如果 num_digits 大于 0,则四舍五入到指定的小数位,如果 num_digits 等于 0,则四舍五入到最接近的整数,如果 num_digits 小于 0,则在小数点左侧进行四舍五入。
举例来说,
=ROUND(2.15, 1) 将 2.15 四舍五入到一个小数位,结果为2.2
=ROUND(2.149, 1) 将 2.149 四舍五入到一个小数位结果为2.1
=ROUND(-1.475, 2) 将 -1.475 四舍五入到两小数位结果为-1.48)
=ROUND(21.5, -1) 将 21.5 四舍五入到小数点左侧一位结果为20
作者:
桂馥兰香
时间:
2009-9-19 21:47
三、利用Excel中的RAND函数产生随机数
当我们需要产生一些随机数,如单位的抽奖,购买体育彩票前的选号等,我们可以利用Excel中的RAND函数来产生这些随机数。RAND函数能够返回大于等于0小于1的均匀分布随机数,每次计算工作表时都将返回一个新的数值。我们只要将RAND()与INT函数组合起来,就能够产生各种位数的随机数了。
“=INT(RAND()*10)” 产生0到10之间的任意自然数
“=INT(RAND()*100)” 产生0到100之间的任意自然数
……
由此,我们只需要在7(或其他大小)个单元格中分别输入“=INT(RAND()*10)”,这样就能够产生一个7位的随机数。
作者:
桂馥兰香
时间:
2009-9-19 21:49
三、Excel工作表中“IF”函数的另类用法
1.根据身份证号自动填写“性别”(男、女)
每个单位一般都有“职工花名册”,其中有“身份证号”和“性别”两列数据,有没有想过让表格根据身份证号自动填写性别呢?方法如下:在C4单元格中输入“=IF(MOD(RIGHT(D4),2)=0,"女","男")”,以下单元格复制即可。
说明:根据目前我国居民身份证的编号规则,男的末尾数是奇数,女的末尾数是偶数。Mod()是求余数函数,RIGHT()是截取右侧字符串函数,上述Right(D4)也可写为Right(d4,1),即截取D4单元格中数据的最右侧一位。
2.去除计算列中的“0”
表格中有些列是根据其他列中的数据计算得来的,一旦输入公式,表格中往往会出现许多“0”,影响美观。去除“0”的方法如下:在G15单元格中输入“=IF(E15+F15=0,"",E15+F15)”其余复制即可。(注:本例中G列=E列+F列,即应发工资=基本工资+岗位津贴)
3.去除“#DIV/0!”等乱字符
表格公式中时常会用到除法,当除数为空或“0”时,单元格中就会出现“#DIV/0!”等字样的乱字符,非常影响美观,去除它的方法如下:在E13中输入“=IF(D13=0,"",C13/D13)”,其余复制即可。(注:本例中E列=C列/D列,即单价=金额/数量)
作者:
桂馥兰香
时间:
2009-9-19 21:52
四、用身份证号算生日:MID函数的用法
MID函数的作用是返回文本字符串中从指定位置开始的特定数目的字符(该数目由用户指定)。
语法
MID(text,start_num,num_chars)
Text 是包含要提取字符的文本字符串。
Start_num 是文本中要提取的第一个字符的位置。文本中第一个字符的 start_num 为 1,以此类推。
Num_chars 指定希望 MID 从文本中返回字符的个数。
举例来说,如果在单元格中输入“=MID("Computer Fans",1,8) ”,得到的结果就是“Computer”。
在生活中有很多例子可以用到MID函数,最常见的就是单位人员调查表中的通过身份证号码得出生日的例子。
首先在调查表中输入所有人员的身份证号码,注意一定要使用文本类型。
然后在需要显示生日的单元格中输入公式“="19"&MID(A2,7,2)&"年"&MID(A2,9,2)&"月"&MID(A2,11,2)&"日"”,其中A2是指A2单元格中的内容,用户应当根据实际情况进行输入,单击回车键后,生日就自动计算出来了。
作者:
游客
时间:
2009-9-23 16:57
没多大用处
作者:
桂馥兰香
时间:
2009-9-23 20:10
原帖由
游客
于 2009-9-23 16:57:00 发表
没多大用处
用处大了,看你是从事什么工作的。
欢迎光临 绿色圃中小学教育网 (http://lspjy.com/)
Powered by Discuz! X3.2