Excel函数公式应用:页眉无拘无束的随意设置

Excel函数公式应用:页眉无拘无束的随意设置

Excel函数公式应用:页眉无拘无束的随意设置

页眉和页脚大家都用过吧?用得最多的莫过于当前第几页/总共第几页。但你是否想过将“第N页/总M页”无拘无束的放置,而不是只能置于页眉页脚中?,现教你一法,可以通用。到任何地方均可使用。

首先:点CTRL+F3打开定义名称,再在上面输入“纵向当前页”,在下面引用位置处输入=IF(ISNA(MATCH(ROW(),GET.DOCUMENT(64))),1,MATCH(ROW(),GET.DOCUMENT(64))+1)。然后再继续添加第二个名称:“横向当前页”,在下面引用位置处输入=IF(ISNA(MATCH(column(),GET.DOCUMENT(65))),1,MATCH(column(),GET.DOCUMENT(65))+1)。再输入“总页”;引用位置处输入:=GET.DOCUMENT(50)+RAND()*0。最后再定义“无拘无束的页眉”;引用位置:="第"&IF(横向当前页=1,纵向当前页,横向当前页+纵向当前页)&"页/共"&总页&"页"。
现在你在工作表任何处输入=无拘无束的页眉即可。
本公式核心在于GET.DOCUMENT,这是4.0宏函数,OFFICE97及以前版专用,新版OFFICE中仍兼容,但只限定义名称中使用。
在帮助中说(64和65为其参数):64行数的数组,相应于手动或自动生成页中断下面的行。65列数的数组。相应于手动或自动生成的页中断右边的列。"
本公式中取64,用于计算当前行与分页符之前后关系.GET.DOCUMENT(64)即返回分页符所在行下一行之行号(亦即第二页第一行)。

判断当前行是否大于分页符所在行
“=IF(ISNA(MATCH(ROW(),GET.DOCUMENT(64))),1”此句利用MATCH之模糊查找功能将当前行号与分页符下行(分页符下一行是一个单元N行的一维数组,文档有几页则有几行,本实例文档有三页,请看公式求值之计算图示)做比较,此处省略MATCH第三参数,即查找小于等于目标值,如果目标值大于当前行号,则MATCH返回错误值。那么此处再用IF(ISNA(),1)加以判断,即若找不到小于等于当前行号的值则显示1,表示当前行处于第一页。

取得当前行所在页
=MATCH(ROW(),GET.DOCUMENT(64))+1
如果前一个MATCH返回FALSE,则取IF函数第三参数值即MATCH(ROW(),GET.DOCUMENT(64))+1
此参数再用MATCH在GET.DOCUMENT(64)产生的数组中查找当小于等于前行号的数值,若数组中第N个值小于等于当前行号,则当前行在N+1页。

取得总页
=GET.DOCUMENT(50)+RAND()*0
GET.DOCUMENT(50)即求当前设置下欲打印的总页数,其中包括注释,如果文件为图表,值为1
RAND()*0作用是当文件分页数改变时,本公式结果根随变化,起公式结果刷新作用。

获取“横向当前页”
横向当前页与纵向当前页原理相同,改ROW()为COLUMN(),并将GET.DOCUMENT参数改为65即可
若你的工作表只有纵向分页或者横向分页,那么现在就可以使用前面的公式定义的名称获取当前页及总页了;但如果分页方式为横向多页纵向也多页呢?则在将以上“横向当前页”与“纵向当前页”无缝接合方可使用,否则将返回错误结果。
最后生成“无拘无束的页眉”(或者改称文件分页)
="第"&IF(横向当前页=1,纵向当前页,横向当前页+纵向当前页)&"页/共"&总页&"页"
公式解说完毕!各位可以用不同的文字定义名称在各自的工作表中试用了。

 

推荐阅读