Excel 能否首页不显示页码、正文显示综合页码?

公司要求日产量表必须提供一个封面,在封面显示公司名称、LOGO和报表名称,其设计界面如图8.17所示。

图8.17 日产量表表格布局方式

在打印日产量报表时,封面、白班产量表和晚班产量表必须打印在一起,但是首页不能显示页码,因为要保障封面的美观,正文则需要显示综合页码,包含白班报表与晚班报表的总页数。

如何才能实现以上需求呢?

解题步骤

本案例的需求比较复杂,设置也会相应变得复杂,具体的操作步骤如下。

1.选择“白班产量表”,然后在按下Shift键的同时再选择“晚班产量表”。

2.打开功能区的“页面布局”选项卡,然后单击“页面设置”组右下角的“页面设置”对话框启动器,弹出“页面设置”对话框。

3.打开“页眉/页脚”选项卡,单击“自定义页眉”按钮,弹出“页眉”对话框,图 8.18展示了“自定义页眉”按钮位置。

图8.18 启动“页眉”界面

4.在左边的方框中输入代码“第㊣[页码]页总㊣[总页数]页”,表示在页眉的左方显示当前页码和总页数,然后在中间的方框中输入代码“㊣[标签名]”,表示页眉的中间部位显示工作表名称,设置界面如图8.19所示。

图8.19 在页眉中添加页码与工作表名称

5.单击“确定”按钮保存设置,然后关闭“页面设置”对话框。

6.选择“封面”工作表,在按住 Shift 键的同时选择“晚班产量表”,然后按下组合键<Ctrl+F2>,进入打印预览界面,可以看到封面未显示页眉,效果如图8.20所示。

图8.20 封面不显示页眉

7.单击左下角的右箭头切换到第2页,在第2页的页眉中显示了当前页的页码及总页数、工作表名称,其中总页数包含了封面、白班产量表和晚班产量表的页数之和,效果如图 8.21 所示。

图8.21 正文显示页码、总页数和工作表名称

8.单击两次左下角的箭头切换到第4页,页眉中的工作表名称会变成“晚班产量表”,当前页码则更新为“第4页”,它其实是“晚班产量表”的第1页。

知识扩展

1.若选择多个工作表后再设置页眉,那么页眉会同时应用到每一个工作表中去。相比每个工作表设置一次页眉能提高数倍工作效率。

2.若页眉中指定了页码和总页数,打印单个工作表时页眉中只会计算当前工作表的页数。若选中多个工作表再打印,那么Excel会自动累加这些工作表的总页数。但是对于页面设置中不包含页码与总页数的工作表,Excel 只是累计它的页数,但不会在这个工作表的纸张中打印出相应的页码。

本例中“封面”未设置页眉,因此打印时第一页不显示页眉,从第二页开始打印页眉,页眉中的页数包含了“封面”工作表。

3.如果要求本例的页眉中显示的页码忽略第1页,只计算4页,那么有两种方法实现:其一是“封面”工作表单独打印一次,其他工作表同时打印;其二是修改页眉中的编码,采用“第&[页码]-1页总&[总页数]-1页”,表示页码和总页数都减1。

Excel 能否打印后显示“第Ⅹ页总Y页” ?

工作表中数据较多时,打印后会显示在多页中。为了方便查看,要求每一页顶端都要显示“第X页总Y页”字样,如何才能实现此需求呢?

解题步骤

在页眉中可以添加总页数和当前页的编码,具体操作步骤如下。

1.打开功能区的“页面布局”选项卡,然后单击“页面设置”组右下角的“页面设置”对话框启动器,弹出“页面设置”对话框。

2.打开“页眉/页脚”选项卡,单击“自定义页眉”按钮,弹出“页眉”对话框,图 8.14展示了“自定义页眉”的按钮位置。

图8.14 “页面设置”对话框

3.在“页眉”对话框中依次单击“插入页码”和“插入页数”两个按钮,在左边的方框中会产生代码“㊣[页码]㊣[总页数]”,效果如图8.15所示。

图8.15 添加页码和总页数

4.手工修改代码为“第㊣[页码]页总㊣[总页数]页”。

5.单击“确定”按钮保存设置,同时返回工作表界面。

6.按组合键<Ctrl+F2>进入打印预览界面,在页面左上方可以看到“第1页总4页”字样,表明页眉添加成功,效果如图8.16所示。

图8.16 页眉效果

7.单击左下角的右方向箭头切换到下一页,页眉内容会更新为“第2页总4页”。

知识扩展

1.页眉是预览时或打印后才能看到的内容,在普通模式下不会显示出来。页眉可以显示页码、页数、时间、日期、文件路径、文件名称、图片等内容,工作中应用最广泛的是页码和页数。

2.代码“&[页码]”代表当前的页数,它是一个数值,不包含“第”和“页”,因此需要手工修改代码。

Excel 是否可以不打印错误值?

工作表中有错误值时,能否在打印时忽略错误值?

要求不能删除错误值,避免影响数据的完整性。

解题步骤

Excel的“页面设置”对话框中可以调整错误值的显示方式,具体操作步骤如下。

1.打开功能区的“页面布局”选项卡,然后单击“页面设置”组右下角的“页面设置”对话框启动器,弹出“页面设置”对话框。

2.打开“工作表”选项卡,单击“错误单元格打印为”右方的倒三角符号,然后从弹出的列表项中选择“<空白>”,设置界面如图8.13所示。

图8.13 指定错误值的处理方式

3.单击“确定”按钮保存设置,然后打印工作表,工作表中的所有错误值都不会被打印出来。

知识扩展

1.Excel对于打印单元格的错误值有4种处理方式,默认选项是“显示值”,表示单元格原本显示什么就打印什么;如果将选项调为“<空白>”,则表示打印时将错误值所在单元格打印为空白,要注意不是打印成“空白”二字;如果将选项调为“–”,表示用“–”代替原来的错误值;如果将选项调为“#N/A”,表示一切错误值都替换成“#N/A”。工作中最常用的是前两种打印方式。

2.本例和案例113有所不同,案例113是隐藏错误值,任何时候都不显示;本例是所有错误值在工作表中都正常显示,只是打印后不显示在纸张上,因此两个案例的目的有本质的区别。

Excel 能否将批注一并打印出来?

在图8.8所示的生产表中,F列有4个批注,但打印生产表后无法看到批注内容。是否有办法将批注和生产数据打印在同一页中呢?

图8.8 带批注的生产表

解题步骤

在“页面设置”对话框中有批注相关的选项,修改选项值即可打印批注,具体操作步骤如下。

1.单击功能区的“审阅”→“显示所有批注”,此时工作表中的所有批注都会显示出来,效果如图8.9所示。

图8.9 显示所有批注

2.打开功能区的“页面布局”选项卡,然后单击“页面设置”组右下角的“页面设置”对话框启动器,弹出“页面设置”对话框。

图8.10说明了“页面设置”对话框启动器的位置。

图8.10 “页面设置”对话框启动器

3.打开“工作表”选项卡,单击“批注”右方的倒三角符号,然后从弹出的列表项中选择“如同工作表中的显示”,操作界面如图8.11所示。

图8.11 指定批注的处理方式

4.单击“确定”按钮保存设置,然后按组合键<Ctrl+F2>打开打印预览界面,从预览效果中可以看到批注内容,且批注的打印样式与工作表中的显示样式一致。预览界面如图8.12所示。

图8.12 打印预览

知识扩展

1.Excel对批注的处理方式包含三种,默认设置下是不打印批注的,其他两种设置为“工作表末尾”和“如同工作表中的显示”,前者表示将所有批注打印到最后一页中,该页只打印批注不打印正文内容;后者表示批注的打印效果与在工作表中显示的状态一致,因此打印前必须调整为显示所有批注。

2.当工作表中批注较多时,应该将批注的外框调小,避免多个批注重叠显示,从而影响打印文件的美观性。

Excel 能否手动调整打印内容?

图8.3所示的工作表中,A1:G52区域包含了50个职工的产量数据,I2:J10区域则存放了计算产值要用到的参考单价。单价区域 I2:J10 原本仅供公式调用,不需要打印出来,但实际打印时总会将它打印在产量表中,有什么方法在不删除、不隐藏单价区域的情况下只打印产量表而不打印单价区域呢?

图8.3 产量表

解题步骤

分页预览是最直观的了解分页状态的工具,在分页预览状态下会产生一条分界线,拖动边界线可以调整打印内容,具体操作步骤如下。

1.单击功能区的“视图”→“分页预览”,从而使活动工作表进入分页预览状态。在分页预览状态下,打印区域周边会产生一条蓝色的分界线,如图8.4所示。

图8.4 分页预览

2.将鼠标指针移到右边的蓝色线条上,按下鼠标左键后向左拖到G列,然后松开左键,此时单价区域已被排除到蓝框以外,表示只打印蓝框以内的区域。调整后的蓝线位置如图8.5所示。

图8.5 调整打印边界

在此状态下打印工作表,将会忽略单价区域。

知识扩展

1.设置打印区域和调整分页预览状态下的蓝色边界线都可以改变打印对象,其中后者比较直观,因此不是很熟悉Excel的用户应通过本例的步骤调整打印对象。

2.调整分页预览状态下的蓝色边界线不仅仅说明了哪个单元格的值会参与打印,它还会标示每一页与其他页的边界,可以通过拖动蓝线增减某一页的打印内容,或者调整蓝线的位置,让原本需要打印两页的内容打印到一页中去。

例如,在图8.6所示的状态下,三条纵向的蓝色线将工作表分成两页,用鼠标左键将中间的蓝线向右拖到J列右方,效果如图8.7所示,那么原本打印两页的内容将会打印在一页中。

图8.6 打印两页

图8.7 调整蓝线后只打印在一页中

Excel 如何修改打印区域?

图8.1所示的工作表中A1:F44区域包含A组、B组、C组的产量信息,当不做任何设置直接打印时总是打印所有内容。现要求只打印B组产量表,如何才能忽略其他区域呢?

图8.1 产量表

解题步骤

Excel提供了一个设置打印区域的工具,用于随意调整打印区域,具体操作步骤如下。

1.选择A15:F28区域。

2.单击功能区的“页面布局”→“打印区域”→“设置打印区域”。

3.按组合键<Ctrl+F2>进入预览状态,从预览效果中可以看到打印目标只包含A15:F28区域,排除了A组和C组的数据,效果如图8.2所示。

图8.2 预览打印目标

知识扩展

1.设置打印区域的目的是排除不需要打印的区域,不过要打印的目标最好是连续的区域。当把多个区域设置为打印区域后,Excel 会将这些区域分别打印在不同的页中,哪怕每个区域只有一行。

2.当把一个区域设置为打印区域后,Excel 会自动生成一个名为“Print_Area”的名称,名称的引用位置为打印区域的地址,当修改名称的引用位置时,打印的目标区域也会相应地改变。

3.如果下次想打印所有的数据,不是重新设置打印区域,而是单击“取消打印区域”按钮。

Excel 能否根据采购数量和单价一步汇总所有金额?

图7.136中F1:G9区域包含所有产品的单价,A1:C7区域是近期的采购记录。

现要求一次性计算所有采购产品的金额之和,存放在C8单元格。

图7.136 采购表

解题步骤

Excel中按条件求和的函数是SUMIF,按多条件求和的函数是SUMIFS。本例不需要多条件求和,而是同时对多个对象求和,因此采用 SUMPRODUCT+SUMIF 的方式实现,具体公式如下(见图7.137):

图7.137 汇总所有购买产品的金额

知识扩展

1.SUMIF函数用于按条件求和,第一参数是用于条件计算的单元格区域;第二参数代表条件,当第二参数是单个值时 SUMIF 的计算结果也是单个值,第二参数包含多个条件时 SUMIF的计算结果也是多个值;第三参数代表实际参与求和的区域,它必须与第一参数的高度、宽度一致。第三参数是可选参数,当忽略第三参数时表示对第一参数求和。

本例中条件为B2:B7,代表同时对6个条件分别求和,产生6个求和结果。当F2:F9区域中的值等于B2:B7中的任意一个单元格的值时,那么就对G2:G9区域中对应位置的单价求和。由于F2:F9区域中每个产品都只出现一次,因此求和的结果其实就等于该产品的单价。

简言之,表达式“SUMIF(F2:F9,B2:B7,G2:G9)”的功能是查找B2:B7区域中每个产品对应的单价,B2:B7区域有多少个单元格,表达式“SUMIF(F2:F9,B2:B7,G2:G9)”就生成多少个单价。

2.SUMPRODUCT的功能是对数组参数中的每个元素相乘,最后再求和,简称计算乘积之和。当只有一个参数时,SUMPRODUCT的功能等同于SUM函数。

本例中表达式“SUMIF(F2:F9,B2:B7,G2:G9)”用于生成B2:B7区域中每个产品的对应单价,C2:C7则是对应的采购数量,SUMPRODUCT函数将两者逐一相乘,然后汇总即为所有产品的金额之和。

3.通过以下3个步骤可清晰地了解本例公式的运算过程。

在图7.138中,选择D2单元格后输入公式“=SUMIF($F$2:$F$9,B2,$G$2:$G$9)”,然后将公式向下填充到D7,公式会生成6个产品的单价。

图7.138 利用SUMIF函数计算产品单价

在图7.139中,E2的公式是“=D2*C2”,然后将公式向下填充到E8,公式的作用是计算每个产品的数量与单价之积,即每个产品的金额。

图7.139 分别计算每个产品的单价与数量乘积

在图7.140中,公式“=SUM(E2:E7)”用于计算每个产品的金额之和。

图7.140 汇总所有产品的金额

以上3个运算过程等同于“=SUMPRODUCT(SUMIF(F2:F9,B2:B7,G2:G9),C2:C7)”的功能。其中SUMPRODUCT包含了单价乘以数量再汇总两项工作。

Excel 可否将包含文本的复杂表达式转换成值?

图7.133中A列的值用于描述房屋面积或长宽高规格,其中文本都存放在【】中,数字和运算符在【】以外。是否有办法将这些包含数学表达式和文本的字符串转换成计算结果呢?

图7.133 包含字符描述的表达式

解题步骤

将这种复杂表达式转换成值必须借助宏表函数EVALUATE才能实现,具体操作步骤如下。

1.选择B2单元格,按组合键<Ctrl+F3>,弹出“名称管理器”对话框。

2.单击“新建”按钮弹出“新建名称”对话框,然后将名称设置为“结果”,将引用位置设置为以下公式:

设置界面如图7.134所示。

图7.134 定义名称

3.单击“确定”按钮保存设置,然后返回工作表界面。

4.在B2单元格输入公式“=结果”,然后双击B2的填充柄,将公式向下填充到B4,公式的计算结果如图7.135所示。

图7.135 忽略文本将表达式转换成值

知识扩展

1.EVALUATE是宏表函数,不能在单元格中直接调用,必须在名称中调用此函数,然后在单元格中调用名称执行运算。

2.本例中要计算的表达式存在干扰符,.EVALUATE 函数无法直接将它转换成值,好在干扰符都有明显的规律,只要将干扰符替换成空文本即可执行后期的数据运算。

本例中所有干扰符都在【】中,【】也属于干扰符。本例的处理方法是使用 SUBSTITUTE函数将【替换成“*istext(""”,将】替换成“"")”,那么原本的“【客厅2个】”将会被转换成“*istext("客厅2个")”。

ISTEXT 函数用于判断参数是否为文本,由于本例【】中间的字符全是文本,因此 ISTEXT的计算结果为True,True参与数值运算时当作1处理,因此“*istext("客厅2个")”的运算结果其实是“*1”。同理,其他所有干扰符都会被转换成“*1”,因此“12【长】*5【宽】*9.5【高】”通过替换后相当于“12*1*5*1*9.5*1”,也就相当于“12*5*9.5”。

换言之,两个SUBSTITUTE函数的嵌套应用可以将干扰符转换成“*1”,又由于任何数乘以1都等于原值,因此最终结果是忽略了所有干扰符。

3.如果本例中的【】替换成其他符号,处理方法也一样,替换公式中对应的符号即可。

4.如果没有干扰符,只是“1*2+5”、“(12+8)*5-5/2”这种标准的表达式,那么在定义名称时可以改用“=EVALUATE(A2)”。

Excel 如何实现将中文翻译为英文?

Excel的审阅选项卡中有一个翻译工具,它一次只能翻译一个单词,如果要求批量翻译整句文字,Excel能否实现呢?

解题步骤

有个翻译软件有一个在线翻译工具,其网址为http://fanyi.youdao.com。

Excel提供了一个WEBSERVICE函数,可以读取该网页代码,因此借用WEBSERVICE函数可以执行中英翻译。

假设要翻译A2:A4区域的语句,具体操作步骤如下。

1.在B2单元格中输入以下公式:

2.双击B2单元格的填充柄,使公式自动向下填充,翻译结果如图7.132所示。

图7.132 批量翻译中文成英文

知识扩展

1."http://fanyi.youdao.com/translate?&i="&A2&"&doctype=json",这是一个名为“有道”的在线翻译网址,其中A2代表需要翻译的内容在A2单元格中,可以是中文也可以是英文。

2.WEBSERVICE函数用于读取网站内容,它本身没有翻译功能,本例利用有道软件的在线翻译工具执行翻译,然后使用WEBSERVICE函数读取翻译结果。

3.WEBSERVICE函数读取的网页内容包含翻译结果,但并不只有翻译结果,还存在其他的干扰符,需要使用函数去除干扰符。

以 “路 在 脚 下” 为 例,翻 译 后 产 生 的 网 页 代 码 是“{"type":"ZH_CN2EN","errorCode":0,"elapsedTime":0,"translateResult":[[{"src":" 路 在 脚 下","tgt":"At the foot of the road in"}]]}”,只有“At the foot of the road in”才是真正的翻译结果,必须使用函数去除干扰符。

观察以上字符串可以发现规律:目标在“""tgt"":""”与“""}]]}”之间,因此使用SUBSTITUTE函数将两者都替换成1000个空格,然后使用MID函数从第1000位开始提取长度为1000的字符串,最后删除空格,剩下的字符即为翻译结果。

以上算法和案例174中提取两个“-”之间的日期的思路完全一致。

Excel 可否根据职员编号计算职员能享受的年假天数?

某公司的职员编号中包含部门名称缩写、进厂日期和序号,编号效果如图7.128所示。

图7.128 职工信息表

其中,部门编号与部门名称的对应关系见表7.4。

表7.4 编号与部门对应关系表

现要求利用编号中的入厂日期计算每个职工的年假天数。年假天数的计算方法见表7.5。

表7.5 年假计算办法

解题步骤

本例的问题相当复杂,因此可以分多个步骤来书写公式,将一个公式拆分成多个公式书写更容易理解公式的计算过程,同时也不易出错。具体步骤如下。

1.在E1:H1区域分别输入“进厂日期”、“完善日期”、“进厂月数”、“年假天数”。

2.在E2单元格输入以下公式,此公式用于提取两个“-”之间的字符,提取结果见图7.129。

图7.129 提取进厂日期

职员编号中的日期没有完整的年份,因此需要通过公式来完善日期。

3.在F2单元格输入以下公式:

有了完整的入职日期后就可以计算职工的入职时间了,单位为月。

4.在G2单元格输入以下公式:

有了入职时间,接下来就可以通过IF函数计算职工可享用年假的天数。

5.在H2单元格输入以下公式:

在以上4个公式的协同工作下,职工的年假天数会自动产生,效果如图7.130所示。

图7.130 分四步计算出年假天数

6.选择E2:H2,然后按下填充柄向下拖到第12行,从而让公式计算所有职工的年假天数。

假设只用一个公式计算年假天数,那么公式会相当长,不管是新手还是老手都不建议直接一步完成。如果要求只能在单列中完成,那么可以定义名称,通过名称简化公式,操作步骤如下。

1.删除E:H区域,然后在E1中输入“年假天数”。

2.选中E2单元格,按组合键<Ctrl+F3>打开“名称管理器”。

3.单击“新建”按钮,弹出“新建名称”对话框,然后将名称设置为“时间”,将引用位置设置为以下公式:

4.单击“确定”按钮保存设置,然后返回工作表界面。

5.在E2单元格输入以下公式:

6.双击E2单元格的填充柄,将公式向下填充到E12,最终效果如图7.131所示。

图7.131 单个公式计算年假天数

知识扩展

1.公式“=TRIM(MID(SUBSTITUTE(A2,"-",REPT(" ",99)),99,99))”的含义是将职员编号中的“-”替换成99个空格,然后用MID函数从替换后的字符串中的第99位开始提取99个字符,从而得到空格与日期组成的字符串,最后用Trim函数去除空格,只保留日期。

公式中的REPT函数用于将指定的字符重复显示若干次,第一参数是要重复显示的字符,第二参数用于控制重复次数。例如“=REPT("AB",3)”的计算结果为“ABABAB”。

SUBSTITUTE函数用于将字符串中的部分字符替换成新字符,在本例中的作用是将“-”替换成99个空格。

由于替换后的日期前后各有99个空格,因此使用MID函数从替换后的字符串中第99位开始提取99个字符只能提取到空格和日期,不包含前面的部门编号和后面的序号,此时去除所有空格就只剩下日期了。

2.职工编号中的日期包含两种:一种是2000年以后的,第一个数字是0或1;另一种是2000年以前的,第一个数字是9,基于此规律,使用IF函数判断第一个数字是否等于9即可,如果等于9则在日期前添加19,否则添加20。

此处要注意的一点是LEFT函数提取出来的数字是文本格式的,因此和数字9比较时需要将数值9也转换成文本,在9的前后添加半角引号

3.DATEDIF函数计算两个日期的时间差时,两个日期都必须是日期格式的,“20150314”这种格式的数值不是日期格式,因此需要使用TEXT函数转换成“0000-00-00”这种格式后再参与计算。

4.当IF函数要求两个条件同时成立才算满足条件时,需要使用AND函数限制这两个条件。