一、初步了解Excel公式
1.什么是公式
前面已经介绍过,我们把“公式”列为不同于“数值”和“文本”之外的第三种数据类型。公式的共同特点是以“=”号开头,它可以是简单的数学式,也可以是包含各种Excel函数的式子。
2.公式由哪些元素组成
输入到单元格中的公式均由等号开头,等号后面由如下五种元素组成:
运算符:例如“+”或者“*”号。
单元格引用:它包括单个的单元格或多个单元格组成的范围,以及命名的单元格区域。这些单元格或范围可以是同一工作表中的,也可以是同一工作薄其他工作表中的,甚至是其他工作薄工作表中的。
数值或文本:前面介绍过的两种数据类型。例如,“100”或“新悦国际教育集团”。
工作表函数:可以是Excel内置的函数,如SUM或MAX,也可以是自定义的函数。
括号:即“(”和“)”。它们用来控制公式中各表达式被处理的优先权。
了解公式的组成是创建公式必备的基础。另外,Excel工作表中的公式最多可以由1024个字符组成,我们日常所创建的公式,超过100个字符的已经非常少,因此这个长度足够我们使用了。
看看公式长什么样子
二、公式能做什么?
简单地说,我们建立一个公式,提供给它相关的数据信息,目的是希望公式给我们一个答案或计算结果。从这一点上看,Excel公式和我们在数学中学过的公式的功能是一样的。所以,在以后的工作中,可以看到很多公式都是我们所熟知的数学式。
除此之外,由于Excel的公式还可以包含Excel的各种函数。因此,Excel公式除了可以实现传统的数学式具有的计算功能外,还可以执行很多特殊的任务。比如,结合IF函数,可以让公式具有选择性,根据不同的条件,得出不同的结果。后面的“计算业绩奖金”实际任务中,将会详细介绍在公式中嵌套IF函数解决问题。
Excel的内置函数有300多个,在公式中灵活使用这些函数,可以极大地提高公式解决问题的能力,轻松胜任各种复杂的任务。
比如下图所示的三个公式功能举例:第一个公式自动计算出单价与数量的乘积得到金额,第二个公式自动计算所有销售额的和,第三个公式将姓和名合并在一起得到全名。
公式功能举例
三、公式的简单应用实例
1. 计算商品金额数值
下图所示的工作表中的A2和B2单元格分别存放着某种商品的“单价”和“数量”数值,为了计算“金额”数值,可以在D2单元格中输入公式“=250*8”(图1),通过后面的学习我们会知道,像这样使用具体数值建立的公式,适应性很差,因此用得也很少。
图1
在D3单元格中输入公式“=A2*B2”,也可计算出“金额”数值(图2),这个公式使用了引用,使得公式得适应性加强。关于在公式中使用引用的知识后面会详细介绍。
图2
2. 计算销售额总和
下图所示的工作表中的B2和B11单元格分别存放10天的销售额,为了计算这些天的销售额总和,可以在D2单元格中输入公式“=B2+B3+B4+B5+B6+B7+B8+B9+B10+B11”(图3),这个公式和数学中的求和公式没什么两样,不过由于需要求和的项目太多,所以公式看起来比较长。
图3
为了简化公式,我们也可以在公式中使用函数实现同样的功能。
选中D3单元格,输入公式“=SUM(B2:B11)”,可以看到得出的计算结果是一样的(图4),其中SUM为Excel的内置函数,功能为求出各项数值之和。
图4
3. 用公式合并字符
下图所示的工作表中的A2和B2单元格分别存放着“姓”和“名”字符,为了得出“姓名”字符串,可以在D2单元格中输入公式“=A2&B2”(图5),其中“&”是一个运算符号,我们称它为连接符号,它的功能为把两个文本字符或文本字符串连接起来。
图5
除了这种方法外,我们也可以使用函数达到同样的目的。选中D3单元格,输入公式“=CONCATENATE(A2,B2)”,回车后得到的结果和前面的公式是一致的(图6)。
图6
其中函数CONCATENATE的功能为将几个文本字符串合并为一个文本字符串。
通过上面的三个简单实例,大家对公式已经有了初步的了解。在实际工作中,公式可以解决问题非常多,它和函数结合在一起,极大的提升了Excel对数据的分析与处理能力。
四、Excel数据分列的三种方法
有一个如图1所示的工作表,如何将其中B列的英文和中文分开成两列?
下面有三种方法,可供选择使用。
方法一、直接分列法
1、启动Excel2003(其他版本请仿照操作),打开相应的工作表,在B列右侧插入一个空白列,用于保存分列的结果。
2、选中B列,执行“数据→分列”命令,打开“文本分列向导-3步骤之1”对话框(如图2),选中其中的“分隔符号-……”选项(通常是默认选项)。
3、按“下一步”按钮,进入“文本分列向导-3步骤之2”对话框(如图3),
选中“其他”选项,并在后面的方框中输入间隔“-”号(因为B列数据中都有一个间隔“-”号,参见图1),单击“完成”按钮,分列完成(参见图4)。
(图4)
注意:可以通过图3中的“数据预览”窗口查看分列后的效果。
方法二、查找提取法
1、在B列右侧插入两列空白列,用于保存提出的字符。
2、选中C2单元格,输入公式:=LEFT(B2,FIND("-",B2)-1)。
注意:上述公式的含义是:先用“FIND”函数查找间隔“-”号在字符串中的位置,然后用“LEFT”函数从字符串左侧开始,提取至间隔“-”号的字符串(即英文字符串,其中“-1”,是为了去掉间隔“-”号)。
3、选中D2单元格,输入公式:=RIGHT(B2,LEN(B2)-FIND("-",B2))。
注意:也可以在D2中输入公式:=REPLACE(B14,1,FIND("-",B14),"")。本公式的含义是,用空字符("")替换到原字符串中的英文字符。
4、同时选中C2和D2单元格,然后将鼠标移至D2单元格右下角,成“细十字线”状时(通常称之为“填充柄”),按住鼠标左键向下拖拉,将上述公式复制到C列和D列下面的单元格中,完成B列其他单元格中字符的分列(分列后的效果如图4)。
方法三、统计提取法
上面两种方法,利用了原有字符串中的间隔“-”号。如果原有字符串中没有那个间隔“-”号,我们可以采取下面的方法来分列。
1、在B列右侧插入两列空白列,用于保存提出的字符。
2、选中C2单元格,输入公式:=LEFT(B2,2*LEN(B2)-LENB(B2)-1)。
注意:上述公式的含义是:先用LEN、LENB函数统计出字符串的字符数的(对于双字节字符,如“汉字”,LENB按数值“2”进行统计,LEN按数值“1”进行统计),然后用LEFT函数进行提取(“-1”同样是为了去掉间隔“-”号,如果没有间隔号,就不需要“-1”了)。
3、选中D2单元格,输入公式:=RIGHT(B2,LENB(B2)-LEN(B2))。
4、同时选中C2和D2单元格,用“填充柄”将上述公式复制到C列和D列下面的单元格中即可(参见图4)。
注意:采取方法二和方法三分列数据后,如果打印时不需要打印原数据列(即B列),可以根据实际需要,选择下面两种方法中的一种来解决:
①选中B列,右击鼠标,在随后弹出的快捷菜单中,选“隐藏”选项,将B列隐藏起来,再进行打印就行了。
②同时选中C列和D列,执行复制操作,然后选中C列,执行“编辑→选择性粘贴”命令,打开“选择性粘贴”对话框(如图5),选中“粘贴”下面的“数值”选项,确定返回。再删除B列,进行打印就可以了。
五、Excel中将数字转换成中文大写
对于用EXCEL来处理日常统计报表的财务人员来说,一个最令人头痛的问题,就是如何将表示金额的阿拉伯数字转换成中文大写形式。
这里给出将阿拉伯金额数字转换成中文大写形式的两种方法:内置函数法、自定义函数法,供参考。
(一)内置函数法
如图1所示,来将C12单元格中的数值转换为中文大写形式,并将结果保存在D12单元格中。
1、分别选中E13、F13、G113单元格,依次输入公式:=TEXT(INT(ABS(C12)),"[DBNum2]")、=TEXT(INT(ABS(C12*10))-INT(ABS(C12))*10,"[DBNum2]")、=TEXT(INT(ABS(C12*100))-INT(ABS(C12*10))*10,"[DBNum2]")。
公式含义解析:分别确定统计结果的元、角、分的数值,并将其转换为中文大写格式。
2、选中E10单元格,输入公式:=E13&"元"&F13&"角"&G13&"分",或者:=CONCATENATE(E13,"元",F13,"角",G13,"分")。
公式含义解析:将E13至G13单元格中的文本组合为一个整体,并在相应位置加上单位“元、角、分”文字。
3、再次选中E12单元格,执行“格式→条件格式”命令,打开“条件格式”对话框(如图1)。 按“条件1”下面的下拉按钮,选中“公式”选项,在后面的方框中输入“=$C$12<0”(如图2),再按“格式”按钮,在随后弹出的“单元格格式”对话框中(如图3),将“字体”颜色设置为红色,确定退出。
4、选中C12单元格,执行“格式→单元格”命令,打开“单元格格式”对话框(如图4),切换到“数字”标签下,选中“分类”下面的“货币”选项后,再选中右边“负数”下面的红色选项,确定退出。
注意:经过以上两步操作后,当C12中的数值小于零时,大、小写结果均以红色显示,与财务要求相一致。
5、选中13行,右击鼠标,在随后弹出的快捷菜单中,选“隐藏”选项,将13行隐藏起来,不影响正常打印效果。
至此,转换工作结束,效果参见图1所示。
(二)自定义函数法
显然上面的转换方法比较麻烦。其实,我们可以事先自定义一个函数,然后再用自定义的函数来转换。
1、执行“工具→宏→Visual Basic编辑器”命令,进入“Visual Basic编辑”窗口(如图5)。执行“插入→模块”命令,插入一个模块(如“模块1”),双击“模块1”在窗口右边展开“模块1(代码)”编辑窗口,输入如下代码。
Function dxje(q)
ybb = Round(q * 100) '将输入的数值扩大100倍,进行四舍五入
y = Int(ybb / 100) '截取出整数部分
j = Int(ybb / 10) - y * 10 '截取出十分位
f = ybb - y * 100 - j * 10 '截取出百分位
zy = Application.WorksheetFunction.Text(y, "[dbnum2]") '将整数部分转为中文大写
zj = Application.WorksheetFunction.Text(j, "[dbnum2]") '将十分位转为中文大写
zf = Application.WorksheetFunction.Text(f, "[dbnum2]") '将百分位转为中文大写
dxje = zy & "元" & "整"
d1 = zy & "元"
If f <> 0 And j <> 0 Then
dxje = d1 & zj & "角" & zf & "分"
If y = 0 Then
dxje = zj & "角" & zf & "分"
End If
End If
If f = 0 And j <> 0 Then
dxje = d1 & zj & "角" & "整"
If y = 0 Then
dxje = zj & "角" & "整"
End If
End If
If f <> 0 And j = 0 Then
dxje = d1 & zj & zf & "分"
If y = 0 Then
dxje = zf & "分"
End If
End If
If q = "" Then
dxje = 0 '如没有输入任何数值为0
End If
End Function
注意:①上面代码中英文单引号“'”后面的字符可以不输入,只是用来解释代码的含义。②代码中“dxje”是自定义函数名称,你可以修改为其他字符。
2、输入完成后,关闭VBA编辑窗口返回工作表状态。
3、如果要转换C2单元格的数值,并将结果保存的D2单元格中(如图6),只要在D2单元格中输入公式:=dxje(C2),确认即可(参见图6)。
注意:通常情况下,自定义的函数只适应于定制的工作簿中,如果要在其它工作簿中使用,请将其制作为加载宏,然后加载一下即可。