EXCEL公式技巧汇总.docx
- 文档编号:8481434
- 上传时间:2023-01-31
- 格式:DOCX
- 页数:17
- 大小:29.11KB
EXCEL公式技巧汇总.docx
《EXCEL公式技巧汇总.docx》由会员分享,可在线阅读,更多相关《EXCEL公式技巧汇总.docx(17页珍藏版)》请在冰豆网上搜索。
EXCEL公式技巧汇总
1.公式技巧
1.1在单元格中显示工作表和工作簿的名称
在单元格中显示工作表的名称,有两种要领:
(1)建立如下自定义函数:
Functionbookname()
bookname=ActiveSheet.Name
EndFunction
运用时在单元格中输入公式:
=bookname(),即可返回当前工作簿的标签名字。
(2)自定义名称的要领。
定义如下名称:
点击[插入]à[名称]à[定义],名称的定义为“T_B”,引用位置输入:
“=replace(get.document
(1),1,find("]",get.document
(1)),)&t(now())”,在单元格输入“=T_B”就可以显示当前表名。
值得留心的是,返回的工作表名称随着工作表名称的变化而变化。
在此引用中,GET.DOCUMENT()是宏表函数,当数据变动时不能自动计算,now()是易失性函数,任何变动都会强制计算,宏表函数所以加上now()就可以自动重算了,T()用来将now()产生的数值转化为空文本。
在单元格中显示工作簿的名称,运用系统函数Cell():
在单元格中输入公式:
=Cell("filename"),就会返回该工作簿和工作表的名字(包括绝对路径名),然后根据自己的须要运用一些文本处理函数执行处理即可。
留心:
该函数必须在工作簿已经保存的情况下才生效。
1.2基本判断单元格最后一位是数字还是字母
在有些情况下,须要判断单元格的最后一位是数字还是字母,可以用下面三个公式之一:
(2)=IF(ISNUMBER(--RIGHT(A1,1)),"数字","字母"),直接返回数字或字母。
其中“--”的意思是将文本型数字转化为数值以便参与运算。
(3)=IF(ISERR(RIGHT(A1)*1),"字母","数字"),直接返回数字或字母。
1.3如何求出一个人到某指定日期的周岁?
=DATEDIF(起始日期,结束日期,"Y")
1.4判断单元格中存在特定字符
假如判断A栏里能不能存在"$"字符,有则等于1,没有则等于0,公式为:
=IF(COUNTIF(A:
A,"*$*")>0,1,0)。
1.5计算某单元格所在的列数
通常情况下,A列为第1列,AA列为27列。
可以在A1单元格中输入列标,通过下列公式计算出任何列标的列数:
=COLUMN(INDIRECT(A1&"1"))。
例如:
“FG”列为第163列。
1.6DATEDIF函数的作用
DATEDIF函数计算两个日期之间的天数、月数或年数。
提供此函数是为了与Lotus1-2-3兼容。
语法:
DATEDIF(start_date,end_date,unit)
Start_date为一个日期,它代表时间段内的第一个日期或起始日期。
日期有多种输入要领:
带引号的文本串(例如"2001/1/30")、系列数(例如,如果运用1900日期系统则36921代表2001年1月30日)或其他公式或函数的结果(例如,DATEVALUE("2001/1/30"))。
End_date为一个日期,它代表时间段内的最后一个日期或结束日期。
Unit为所需信息的返回类型。
Unit返回"Y"时间段中的整年数。
"M"时间段中的整月数。
"D"时间段中的天数。
"MD"start_date与end_date日期中天数的差。
忽略日期中的月和年。
"YM"start_date与end_date日期中月数的差。
忽略日期中的日和年。
"YD"start_date与end_date日期中天数的差。
忽略日期中的年。
说明:
MicrosoftExcel按顺序的系列数保存日期,这样就可以对其执行计算。
如果工作簿运用1900日期系统,则Excel会将1900年1月1日保存为系列数1。
而如果工作簿运用1904日期系统,则Excel会将1904年1月1日保存为系列数0,(而将1904年1月2日保存为系列数1)。
例如,在1900日期系统中Excel将1998年1月1日保存为系列数35796,因为该日期距离1900年1月1日为35795天。
请查阅MicrosoftExcel如何存储日期和时间。
ExcelforWindows和ExcelforMacintosh运用不同的默认日期系统。
有关细致信息,请参阅NOW。
示例
DATEDIF("2001/1/1","2003/1/1","Y")等于2,即时间段中有两个整年。
DATEDIF("2001/6/1","2002/8/15","D")等于440,即在2001年6月1日和2002年8月15日之间有440天。
DATEDIF("2001/6/1","2002/8/15","YD")等于75,即在6月1日与8月15日之间有75天,忽略日期中的年。
DATEDIF("2001/6/1","2002/8/15","MD")等于14,即开始日期1和结束日期15之间的差,忽略日期中的年和月。
1.7在一个单元格中指定字符出现的次数
例如在A1单元格中有“abcabca”字符串,求“a”在单元格A1内出现次数,用下列公式:
=LEN(A1)-LEN(SUBSTITUTE(A1,"a",""))。
1.8日期形式的转换
我们在有些情况下写日期会用“20060404”表示,如何转换成“2006-04-04”的标准日期格式,用下面的两个公式之一(假定在A1单元格中有原始日期):
=TEXT(A1,"0000-00-00")
=TEXT(A1,"?
?
?
?
-?
?
-?
?
")。
也可以运用以下公式,转换成“2006-4-4”的格式。
=LEFT(A1,4)&SUBSTITUTE(RIGHT(A1,4),0,"-")。
反之,如何把“2006年4月4日”转换成“20060404”?
可以运用下面的公式之一(假定在A1单元格中有原始日期):
=YEAR(A1)&TEXT(MONTH(A1),"00")&TEXT(DAY(A1),"00")
=YEAR(A1)&IF(MONTH(A1)<10,"0"&MONTH(A1),MONTH(A1))&IF(DAY(DAY(A1)<10),"0"&DAY(A1),DAY(A1))
=TEXT(A1,"yyyymmdd")。
也可以直接自定义格式:
yyyymmdd。
1.9用“定义名称”的要领突破IF函数的嵌套限定
Excel中的IF()函数的一个众所周知的限定是嵌套不能超过7层。
例如下面的公式是不正确的,因为嵌套层数超过了限定。
=IF(Sheet1!
$A$4=1,11,IF(Sheet1!
$A$4=2,22,IF(Sheet1!
$A$4=3,33,IF(Sheet1!
$A$4=4,44,IF(Sheet1!
$A$4=5,55,IF(Sheet1!
$A$4=4,44,IF(Sheet1!
$A$4=5,55,IF(Sheet1!
$A$4=6,66,IF($A$4=7,77,FALSE))))))))
通常的要领会考虑用VBA代替。
但是也可以可以通过对公式的一部分”定义名称”来处理这种限定定义一个名叫”OneToSix”的名称,里面包括公式:
=IF(Sheet1!
$A$4=1,11,IF(Sheet1!
$A$4=2,22,IF(Sheet1!
$A$4=3,33,IF(Sheet1!
$A$4=4,44,IF(Sheet1!
$A$4=5,55,IF(Sheet1!
$A$4=4,44,IF(Sheet1!
$A$4=5,55,IF(Sheet1!
$A$4=6,66,FALSE))))))))
再定义另一个名叫”SevenToThirteen”的名称,里面包括公式:
=IF(Sheet1!
$A$4=7,77,IF(Sheet1!
$A$4=8,88,IF(Sheet1!
$A$4=9,99,IF(Sheet1!
$A$4=10,100,IF(Sheet1!
$A$4=11,110,IF(Sheet1!
$A$4=12,120,IF(Sheet1!
$A$4=13,130,"NotFound")))))))
最后单元格中输入下面的公式:
=IF(OneToSix,OneToSix,SevenToThirteen)
1.10动态求和
举一个基本例子:
例如对于A列,求出A1到当前单元格行标前面一行的单元格中的数值之和,更直接地说,如果当前单元格在B17,那么求A1:
A16之和。
运用下面的公式:
=SUM(INDIRECT("A1:
A"&ROW()-1))。
1.11COUNTIF函数的16种公式配置(设DATA为区域名称)
(1)返加包含值12的单元格数量:
=COUNTIF(DATA,12)
(2)返回包含负值的单元格数量:
=COUNTIF(DATA,"<0")
(3)返回不等于0的单元格数量:
=COUNTIF(DATA,"<>0")
(4)返回大于5的单元格数量:
=COUNTIF(DATA,">5")
(5)返回等于单元格A1中内容的单元格数量:
=COUNTIF(DATA,A1)
(6)返回大于单元格A1中内容的单元格数量:
=COUNTIF(DATA,“>”&A1)
(7)返回包含文本内容的单元格数量:
=COUNTIF(DATA,“*”)
(8)返回包含三个字符内容的单元格数量:
=COUNITF(DATA,“?
?
?
”)
(9)返回包含单词"GOOD"(不分大小写)内容的单元格数量:
=COUNTIF(DATA,“GOOD”)
(10)返回在文本中任何位置包含单词"GOOD"字符内容的单元格数量:
=COUNTIF(DATA,“*GOOD*”)
(11)返回包含以单词"AB"(不分大小写)开头内容的单元格数量:
=COUNTIF(DATA,“AB*”)
(12)返回包含当前日期的单元格数量:
=COUNTIF(DATA,TODAY())
(13)返回大于平均值的单元格数量:
=COUNTIF(DATA,">"&AVERAGE(DATA))
(14)返回平均值上面超过三个标准误差的值的单元格数量:
=COUNTIF(DATA,“>"&AVERAGE(DATA)+STDEV(DATA)*3)
(15)返回包含值为或-3的单元格数量:
=COUNTIF(DATA,3)+COUNIF(DATA,-3)
(16)返回包含值逻辑值为TRUE的单元格数量:
=COUNTIF(DATA,TRUE)
1.12计算一个日期是一年中的第几天
例如2006年7月29日是本年中的第几天?
在一年中,显示是第几天用什么函数呢?
假定A1中是日期,运用下列公式:
=A1-DATE(YEAR(A1),1,0),将单元格格式配置为常规,返回210,即2006年7月29日是2006年的第210天。
1.13如何用公式求出最大值所在的行?
如A1:
A10中有10个数,如何求出最大的数在哪个单元格?
=MATCH(LARGE(A1:
A10,1),A1:
A10,0)
=ADDRESS(MATCH(SMALL(A1:
A10,COUNTA(A1:
A10)),A1:
A10,0),1)
=ADDRESS(MATCH(MAX(A1:
A10,1),A1:
A10,0),1)
1.14在Excel中的绝对引用与相对引用之间切换
在Excel中建立公式时,该公式可以运用相对引用,即相对于公式所在的位置引用单元;也可以运用绝对引用,即引用特定位置上的单元。
引用由所在单元格的“列的字母”和“行的数字”组成,绝对引用由在“列的字母”和“行的数字”前面加“$”表示,例如,$B$1是对第一行B列的绝对引用。
公式中还可以混合运用相对引用和绝对引用。
可以运用F4切换相对引用和绝对引用,选中包含公式的单元格,在公式栏中选择想要改动的引用,按F4键可以执行切换。
1.15在Excel公式和结果之间高速切换
在excel工作表中输入计算公式时,可以运用“Ctrl+`(中音号)”键来决定显示或潜藏公式,可让储存格显示计算的结果,还是公式本身。
1.16如果某列中有大于0和小于0的数,将小于0数字所在的行自动删除
假定在A1-A6中有大于0和小于0的数,可以用下面的VBA程序实现:
fori=6to1step-1
ifcells(i,1)<0thenrows(i).Delete
nexti
1.17奇数行和偶数行求和
有时候须要奇数行和偶数行单独求和,例如要求A列第1行至1000行中奇数行之和,运用公式=SUMPRODUCT((A1:
A1000)*MOD(ROW(A1:
A1000),2)),要求这些行中偶数行之和,运用公式=SUMPRODUCT((A1:
A1000)*NOT(MOD(ROW(A1:
A1000),2)))。
1.18用函数来获取单元格地址
在复杂的计算中,往往要获知单元格的地址,可以用函数=ADDRESS(ROW(),COLUMN())获得当前单元格的地址。
1.19求一列中某个特定的值对应的另外列的最大或最小值
为了直观起见,举一个基本的例子:
例如在A1:
A10中有若干台计算机、打印机、传真机等物品的名称,在B1:
B10中有上述设备对应的价格,求“计算机”对应的最低价格。
可以用公式:
=min(if(a1:
a10="计算机",b1:
b10)),输入该公式后按Ctrl+Shift+Enter完成。
1.20自动记录数据录入时间
运用VBA实现,建立一个Time.xls文档,输入以下VBA代码:
PrivateSubWorksheet_Change(ByValTargetAsRange)
IfTarget.Column<>1Then
ExitSub
Else
Target.Offset(0,1)=Now
EndIf
EndSub
1.21如果一个单元格中既有数字又有字母,如何提取其中的数字呢
Functiongetnumber(rngAsString)AsString
DimmylenAsInteger
DimmystrAsString
mylen=Len(rng)
ForI=1Tomylen
mystr=Mid(rng,I,1)
IfAsc(mystr)>=48AndAsc(mystr)<=57Then
getnumber=getnumber&mystr
EndIf
NextI
EndFunction
1.22Excel数组的使用
数组就是单元的集合或是一组处理的值集合。
可以写一个数组公式,即输入一个单个的公式,它执行多个输入的操作并产生多个结果——每个结果显示在一个单元中。
数组公式可以看成是有多重数值的公式。
与单值公式的不同之处在于它可以产生一个以上的结果。
一个数组公式可以占用一个或多个单元。
数组的元素可多达6500个。
(1)了解数组
首先我们通过多个例子来说明数组是如何工作的。
我们可以从图中看到,在“B”列中的数据为销售量,在“C”列中的数据是销售单价,要求计算出每种产品的销售额和总的销售金额,一般的做法是计算出每种产品的销售额,然后再计算出总的销售额。
但是如果我们改用数组,就可以只键入一个公式来完成这些运算。
输入数组公式的步骤为:
选定要存入公式的单元格,在本例中我们选择“D4”单元格。
输入公式=SUM(B2:
B4*C2:
C4),但不要按下[Enter]键(输入公式的要领和输入普通的公式一样),按下[Shift]+[Ctrl]+[Enter]键。
我们就会看到在公式外面加上了一对大括号“{}”,如图7-36所示。
在单元格“D”中的公式“=SUM(B2:
B4*C2:
C4)”,表示“B2:
B4”范围内的每一个单元格和“C2:
C4”内相对应的单元格相乘,也就是把每个地区的销售量和销售单价相乘,相乘的结果共有3个数字,每个数字代表一个地区的销售额,而“SUM”函数将这些销售额相加,就得到了总的销售额。
下面我们再以运用数组计算3种产品的销售额为例,来说明如何产生多个计算结果。
其操作流程如下:
(1)选择“D2:
D4”单元格区域,该区域中的每个单元格保存的销售金额。
如图7-37所示。
(2)在“D2”单元格中输入公式“=B2:
B4*C2:
C4”(不按[Enter]键)按下[Shift]+[Ctrl]+[Enter]”键,我们就可以从图7-38中看到执行后的结果。
同时我们可以看到“D2”到“D4”的格中都会出现用大括弧“{}”框住的函数式,这表示“D2”到“D4”被当作一个单元格来处理,所以不能对“D2”到“D4”中的任一格作任何单独处理,必须针对整个数组来处理。
(2)运用数组常数
我们也可以在数组中运用常数值。
这些值可以放在数组公式中运用区域引用的地点。
要在数据公式中运用数组常数,直接将该值输入到公式中并将它们放在括号里。
例如,在图7-39中,就运用了数组常数执行计算。
常数数组可以是一维的也可以是二维的。
一维数组可以是垂直的也可以是水平的。
在一维水平数组中的元素用逗号分开。
下面是一个一维数组的例子。
例如数组:
{10,20,30,40,50}。
在一维垂直数组中的元素用分号分开。
在下面的例子是一个6×1的数组,{100;200;300;400;500;600}。
对于二维数组,用逗号将一行内的元素分开,用分号将各行分开。
下一个例子是“4×4”的数组(由4行4列组成):
{100,200,300,400;110,……;130,230,330,440}。
留心:
不可以在数组公式中运用列出常数的要领列出单元引用、名称或公式。
例如:
{2*3,3*3,4*3}因为列出了多个公式,是不能用的。
{A1,B1,C1}因为列出多个引用,也是不能用的。
不过可以运用一个区域,例如{A1:
C1}。
对于数组常量的内容,可由下列准则构成:
数组常量可以是数字、文字、逻辑值或不正确值。
数组常量中的数字,也可以运用整数、小数或科学记数格式。
文字必须以双引号括住。
同一个数组常量中可以含有不同类型的值。
数组常量中的值必须是常量,不可以是公式。
数组常量不能含有货币符号、括号或百分比符号。
所输入的数组常量不得含有不同长度的行或列。
(3)数组的编辑
数组包含数个单元格,这些单元格形成一个整体,所以,数组里的某一单元格不能单独编辑。
在编辑数组前,必须先选取整个数组。
选取数组的步骤为:
(1)选取数组中的任一单元格。
(2)在“编辑”菜单中选择“定位”命令或者按下[F5]键,出现一个“定位”对话框。
按下“定位条件”按钮,出现一个定位条件对话框,如图7-40所示。
选择“当前数组”选项,最后按下“确定”按钮,就可以看到数组被选定了。
编辑数组的步骤为:
选定要编辑的数组,移到数据编辑栏上按[F2]键或单击左键,使代表数组的括号消散,之后就可以编辑公式了。
编辑完成后,按下[Shift]+[Ctrl]+[Enter]键。
若要删除数组,其步骤为:
选定要删除的数组,按[Ctrl]+[Delete]或选择编辑菜单中的“清理”。
(4)数组的扩充
在公式或函数中运用数组常量时,其它运算对象或参数应该和第一个数组具有相同的维数。
必要时,MicrosoftExcel会将运算对象扩展,以符合操作须要的维数。
每一个运算对象的行数必须和含有最多行的运算对象的行数一样,而列数也必须和含有最多列数对象的列数一样。
例如:
=SUM({1,2,3}+{4,5,6})内的第一个数组为1×3,得到的结果为1+4、2+5和3+6的和,也就是21。
如果将公式写成=SUM({1,2,3}+4}),则第二个数据并不是数组,而是一个数值,为了要和第一个数组相加,Excel会自动将数值扩充成1×3的数组。
运用=SUM({1,2,3}+{4,4,4})做计算,得到的结果为1+4、2+4和3+4的和,即18。
将数组公式输入单元格区域中时,所运用的维数应和这个公式计算所得数组维数相同。
这样,MicrosoftExcel才能把计算所得的数组中的每一个数值放入数组区域的一个单元格内。
如果数组公式计算所得的数组比选定的数组区域还小,则MicrosoftExcel会将这个数组扩展,以便将它填入整个数组区域内。
例如:
={1,2;3,4}*2扩充后的公式就会变为={1,2;3,4}*{2,2;2,2},则相应的计算结果为“2,4,6,8”。
再如:
输入公式={1,2;3,4}*{2,3}扩充后的公式就会变为={1,2;3,4}*{2,3;2,3},则相应的计算结果为“2,6,6,12”。
如果MicrosoftExcel将一个数组扩展到可以填入比该数组公式大的区域内,而没有扩大值可用的单元格内,这样就会出现#N/A不正确值。
例如:
={1,2;3,4}={1,2,3}扩充后的公式就会变为={1,2,#N/A;3,4,#N/A}*{1,2,#/A;1.2.#N/A},而相应的计算结果为“2,4,#N/A,4,6,#N/A”。
如果数组公式计算所得的数组比选定的数组区域还要大,则超过的值不会出现在工作表上。
1.23数组的使用
(1)数组公式的实现要领:
其实这些都是数组公式,数组公式的输入要领是将公式输入后,不要直接按回车键(Enter),而是要同时按Ctrl+Shift+Enter,这时计算机自动会为你添加“{}”的。
在论坛上,为了告诉大家这是数组公式,故在公式的头尾都加上了“{}”。
如果不注意按回车了,可以用鼠标点一下编辑栏中的公式,再按Ctrl+Shift+Enter。
编辑或删除数组公式编辑数组公式时,须选取数组区域并且激活编辑栏,公式两边的花括号将消散,然后编辑公式,最后按Ctrl+Shift+Enter键。
选取数组公式所占有的全部区域后,按Delete键即可删除数组公式。
数组常量的运用数组公式中还可运用数组常量,但必须自己键入花括号“{}”将数组常量括起来,并且用“,”和“;”分离元素。
其中“,”分离不同列的值,“;”分离不同行的值。
2、数组公式的原理:
数组公式,说白了就是同时对一组或几组数同时处理,然后得到须要的答案。
运用数组公式的最主要的原理是数于数之间一一对应。
1、假设要将A1:
A50区域中的所有数值舍入到2位小数位,然后对舍入的数值求和。
很自然地就会想到运用公式:
=ROUND(A1,2)+ROUND(A2,2)+…+ROUND(A50,2)。
或者添加ROUND辅助列(A1=ROUND(A1,2)),然后对辅助用SUM函数合计(=SUM(A1:
A50))。
如果用数组公式就不要这么麻烦,公式为:
{=SUM(ROUND(A1:
A50,2))},它的意思即为在数组A1:
A50用ROUND函数执行二位小数的四舍五入,然后执行合计。
2、假设一题为A1:
A10区域中为商品单价,B1:
B10为对应的销售数量,须要统计总销售额,常规做法须要添加辅助列C列,在C列中计算出C1:
C10的每个单价的销售额(C1=A1*B1),然后执行SUM合计(C11=SUM(C1:
C10))。
而数组公式为:
{=SUM(A1:
A10*B1:
B10)}
3、留心:
关于常数项的数组可以直接手工添加{},如此公式=SUM({1,2,3}+{4,5,6}),这也是数组公式的一种形式。
须要统计如下图所示销量的频率分布,即分别统计销量在5000以下、5000到10000、
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- EXCEL 公式 技巧 汇总