EXCEL表格任一单元格内显示其所在页码
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
EXCEL表格的任一当前单元格内显示其所在页码方法
一、首先调整视图为页面视图,横向只有一个分页符,则用下面的方法非常简便
在插入→名称→定义→新建,定义一个名称:PageNumber,当然也可以取一个你喜欢的名字比如:Love,在引用位置中输入
=IF(ISERROR(MATCH(ROW(),GET.DOCUMENT(64),1)),1,MATCH(ROW(),GET.DOCUMENT(64),1) +1)
在当单元格中输入“=PageNumber”,回车,OK
二、若页面视图,横向有多个分页符,则
(一)在插入→名称→定义→新建,定义一个名称:PageNumber,在引用位置中粘贴输入
=IF(GET.DOCUMENT(61),(IF(ISERROR(FREQUENCY(GET.DOCUMENT(64),GET.DOCUMENT(10) )),0,FREQUENCY(GET.DOCUMENT(64),GET.DOCUMENT(10)))+1)*IF(ISERROR(FREQUENCY(GE T.DOCUMENT(65),Column())),0,FREQUENCY(GET.DOCUMENT(65),Column()))+IF(ISERROR(FR EQUENCY(GET.DOCUMENT(64),Row())),0,FREQUENCY(GET.DOCUMENT(64),Row()))+1,(IF(ISE RROR(FREQUENCY(GET.DOCUMENT(65),GET.DOCUMENT(12))),0,FREQUENCY(GET.DOCUME NT(65),GET.DOCUMENT(12)))+1)*IF(ISERROR(FREQUENCY(GET.DOCUMENT(64),Row())),0,FRE QUENCY(GET.DOCUMENT(64),Row()))+IF(ISERROR(FREQUENCY(GET.DOCUMENT(65),Colum n())),0,FREQUENCY(GET.DOCUMENT(65),Column()))+1)*ISNUMBER(NOW())
(二)上述公式不便于阅读,转换为VBA便于阅读:
VBA代码如下:
Sub 定义页码及总页数名称()
' 定义页码及总页数名称Macro
'一个文件第一次使用前须先运行一遍本宏以后则不必了,
s.Add Name:="ColFirst", RefersToR1C1:= _
"=GET.DOCUMENT(61)" '判断打印顺序的设置类型
s.Add Name:="lstRow", RefersToR1C1:= _
"=GET.DOCUMENT(10)" '本工作表已用到的最大行数
s.Add Name:="lstColumn", RefersToR1C1:= _
"=GET.DOCUMENT(12)" '本工作表已用到的最大列数
s.Add Name:="hNum", RefersToR1C1:= _
"=IF(ISERROR(FREQUENCY(GET.DOCUMENT(64),Row())),0,FREQUENCY(GET.DOCUMENT(64), Row()))" 'hNum为本单元格上方的水平分页符个数
s.Add Name:="vNum", RefersToR1C1:= _
"=IF(ISERROR(FREQUENCY(GET.DOCUMENT(65),Column())),0,FREQUENCY(GET.DOCUMENT( 65),Column()))" ''本单元格左边的垂直分页个数
s.Add Name:="hSum", RefersToR1C1:= _
"=IF(ISERROR(FREQUENCY(GET.DOCUMENT(64),lstRow)),0,FREQUENCY(GET.DOCUMENT(64 ),lstRow))" ''本工作表最后一个单元格上方的水平分页符个数
s.Add Name:="vSum", RefersToR1C1:= _
"=IF(ISERROR(FREQUENCY(GET.DOCUMENT(65),lstColumn)),0,FREQUENCY(GET.DOCUMENT (65),lstColumn))" ''本工作表最后一个单元格左边的垂直分页个数
s.Add Name:="ThisPageNo", RefersToR1C1:= _
"=IF(ColFirst,(hSum+1)*vNum+hNum+1,(vSum+1)*hNum+vNum+1)*ISNUMBER(NOW())" '单元格所在页码
s.Add Name:="PagesCount", RefersToR1C1:= _
"=GET.DOCUMENT(50)*ISNUMBER(NOW())" '本工作表的总页数
End Sub
使用方法:⑴将代码粘贴进工具--宏--VB编辑器;
⑵点击开发工具--宏,找到并点击“定义页码及总页数名称”,再点击运行;
⑶在任一单元格输入公式“=ThisPageNo”则在当前单元格显示该单元格所在页码;
⑷在任一单元格输入公式“=PagesCount”,则显示总页数;
⑸输入“=TEXT(ThisPageNo,"第0页")&TEXT(PagesCount,"共0页") ”,在同一单元
格显示当前页码和总页数
三、关于用到的宏函数知识补充:
GET.DOCUMENT(type_num, name_text)
Type_num 指明信息类型的数。下表列出type_num 的可能值与对应结果。
Type_num 返回
1 如果工作簿中不只一张表,用文字形式以“[Book1]Sheet1”的格式返回工作表的文件名。否则,只返回工作簿的文件名。工作簿文件名不包括驱动器,目录或窗口编号。通常最好使用GET. DOCUMENT(76) 和GET. DOCUMENT(88) 来返回活动工作表和活动工作簿的文件名。
2 作为文字,包括name_text的目录的路径。如果工作簿name_text未被保存,返回错误值#N/A。
3 指明文件类型的数