乔山办公网我们一直在努力
您的位置:乔山办公网 > excel表格制作 > excel宏教程-Excel宏表函数大全—现在才知道原来不用VBA也可以完成这些骚操作

excel宏教程-Excel宏表函数大全—现在才知道原来不用VBA也可以完成这些骚操作

作者:乔山办公网日期:

返回目录:excel表格制作

Excel 宏表函数介绍

1、什么是宏表函数


宏表函数是又称excel4.0函数,是Excel第4个版本的函数,为了考虑兼容性,现在的版本依然可以调用该函数。宏表函数是一类非常特殊的函数,你在Excel的函数列表中找不到它们,但它们确实存在,而且功能异常强大,在许多应用中不可或缺。


2、宏表函数有什么用处?


宏表函数可以实现现有版本的函数或技巧无法完成的功能,比如取单元格填充色值、获取工作表的名称列表等。


3、怎么使用宏表函数


宏表函数不能在工作表单元格中直接使用,需要在名称管理器中先定义一个名称,然后在单元格中使用该名称。


4、Excel宏表函数列表



Get.Cell的用法

函数定义: Get.Cell(类型号,单元格(或范围))


其中类型号,即你想要得到的信息的类型号,经试验,范围为1-66,也就是说这个函数可以返回一个单元格里66种信息。


以下是类型号及其所代表的信息


1 - 返回绝对引用 //引用样式由Excel参数决定,可以用工作表函数 CELL("address"); CELL("address",REF)


2 - 返回行号 //可以用工作表函数 CELL("row"); CELL("row",REF); ROW(REF)


3 - 返回列号(数字) //可以用工作表函数 CELL("col"); CELL("col",REF); COLUMN(REF)


4 - 返回数据类型(1-数值或空单元格,2-文本,4-逻辑,16-错误值) //基本可以用工作表函数TYPE,除了针对活动单元格的情形。注意与CELL("type")不同


5 - 返回值 // 直接用 =单元格地址,完美的替代是CELL("contents"), CELL("contents",REF)


6 - 返回公式或值 //如果单元格不含公式,则与5相同。 公式中的引用样式与Excel的设定相同,而宏表函数GET.FORMULA则必然采用R1C1引用样式


7 - 返回数字格式 //常规格式对应的代码与Excel的语言设定有关,可以定义名称拥带宏表函数的公式=INDEX(GET.WORKSPACE(37),26) 得到 该常规格式对应的当前代码。


8 - 返回水平对齐方式编号 //即单元格格式中水平对齐下拉列表中的序号(1-常规,2-靠左,3-居中,4-靠右,5-填充,6-两端对齐,7-跨列居中,8-分散对齐)


9 - 返回左边框线型编号 //编号表见附表1,下面3个也是


10 - 返回右边框线型编号


11 - 返回上边框线型编号


12 - 返回下边框线型编号


13 - 返回背景图案编号 //编号表见附表2


14 - 返回锁定状态(True锁定,False未锁定)


15 - 返回隐藏状态(True隐藏,False未隐藏) //注意不是隐藏行列,是指的保护工作表时是否隐藏公式(编辑栏内容),对应 单元格格式>>保护>>隐藏 这项设定。


16 - 返回列宽及其自适应性 //1行2列数组,第一项是数值,即列宽的设定值,第二项为逻辑值,表示是否是原始的自适应列宽,注意并不是说等于默认的列宽就是True,当你改过该列的列宽后就不会是True了。没有可替代的函数,甚至VBA似乎也无法准确取得第二项的值(前提是不调用这个宏表函数)


17 - 返回行高


18 - 返回首字符的字体名称 //只与首字符有关,后面几个类似


19 - 返回首字符的字体磅值


20 - 返回首字符的粗体状态


21 - 返回首字符的斜体状态


22 - 返回首字符的单下划线状态 //注意只对“单下划线”返回True,其他类型的下划线都返回False,


23 - 返回首字符的删除线状态


24 - 返回首字符的颜色编号 //参见附表3,0表示"默认"颜色


25 - 返回首字符的空心状态 //用于Mac,Windows下无实际显示效果,但是保留设定


26 - 返回首字符的阴影状态 //用于Mac,Windows下无实际显示效果,但是保留设定


27 - 返回手动分页状态(0-无,1-上方,2-左侧,3-左侧和上方) //只针对手动分页符,忽略自动分页符


28 - 返回行的级数 //不曾建立分级列表的话就是第1级


29 - 返回列的级数 //不曾建立分级列表的话就是第1级


30 - 返回是否位于分级列表的汇总行


31 - 返回是否位于分级列表的汇总列


32 - 返回工作表全名 //包括工作簿文件名,即[book1.xls]Sheet1形式,当工作簿主名(第一个小数点之前的部分)与工作表名相同,此时仅返回工作簿名称,如book1.xls。 效果与宏表函数Get.Document(1)一样。与CELL("filename",REF)的区别是,后者包括完整路径,而Get.Cell不带路径。


33 - 返回自动换行状态


34 - 返回左边框线颜色编号


35 - 返回右边框线颜色编号


36 - 返回上边框线颜色编号


37 - 返回下边框线颜色编号


38 - 当图案为实心时,返回单元格的背景色编号;其他时候返回图案前景色编号


39 - 当图案为实心时,返回单元格的图案前景色编号;其他时候返回图案背景色编号


40 - 返回样式名称


41 - 不经翻译返回单元格的公式 //某些语言的excel,函数名称与英文版不同,参数41与6的区别应该就在此处


42 - 返回单元格左边界相对窗口左边界的偏移


43 - 返回单元格上边界相对窗口上边界的偏移


44 - 返回单元格右边界相对窗口左边界的偏移


45 - 返回单元格下边界相对窗口上边界的偏移


46 - 返回是否含批注


47 - 返回是否含声音批注 //该功能只适用于Excel5和95,自97版本开始这个功能被取消


48 - 返回是否含公式


49 - 返回是否含数组公式


50 - 返回垂直对齐方式 //即单元格格式中垂直对齐下拉列表中的序号(1-靠上,2-居中,3靠下,4-两端对齐,5-分散对齐)


51 - 返回文字方向(0-水平,1-垂直,2-向上(90度),3-向下(-90度),4-其他)


52 - 返回前缀字符 //若“1-2-3常用键”功能关闭,则只有'这一种前缀,也就是强制文本型;当“1-2-3常用键”功能打开,有三种前缀,^表示居中(跨列居中也会返回这个前缀),"为靠右(填充也会显示这个前缀),其他都是'(输入时表示左对齐)。在“1-2-3常用键”功能打开时,除了跨列居中,其他的判断为文本型的单元格都会再编辑框中显示一个前缀符,对于跨列居中,虽然不显示,但是用该宏表函数还是会返回^。不过在“1-2-3常用键”功能关闭时,只有用户确实输入过前缀的单元格才会保留前缀,全都变成'(与对齐无关),这时候此宏表函数也只对输入过前缀的返回',不然返回空字符串。注意,这里的行为与CELL("perfix")不同,后者忽略“1-2-3常用键”这个设置,对于判断为文本型的单元格,按照对齐方式返回相应的符号。


53 - 返回单元格的实际显示值,文本型 //对于靠单元格数字格式设置所定义的结果以及因容量限制而形成的#####等都会照实返回,不过不识别自动换行,不会为在相应位置添加换行符。


54 - 返回数据透视表名,不在透视表中则返回#N/A


55 - 返回在数据透视表中的位置(0-行标题,1-列标题,2-页标题,4-行项目,5-列项目,6-页项目,7-数据项标题,8-表格主体),不在透视表中则返回#N/A


56 - 返回字段名,不在透视表中则返回#N/A


57 - 返回首字符的上标状态


58 - 返回首字符的字形 //常规、倾斜、加粗、加粗 倾斜


59 - 返回首字符的下划线类型(1-无,2-单下划线,3-双下划线,4-会计用单下划线,5-会计用双下划线)


60 - 返回首字符的下标状态


61 - 返回在数据透视表中的项目名,不在透视表中则返回#N/A


62 - 返回带工作簿名称的工作表名 //与32不同的是,无论何种情况都是[book1]sheet1形式


63 - 返回图案背景色


64 - 返回图案前景色


65 - 返回两端分散对齐状态


66 - 返回工作簿名称


使用演示:


1)、获取单元格填充颜色的颜色代码


新建一个名为cellcolor的名称



在H20单元格输入公式:=cellcolor即可得到44,注意宏表函数没有(),所以当你输=cellcolor()时是错误的!



输入自定义名称


当将类型号改为66时表示获取当前工作簿的名称



其他的参数就不在进行演示,大家有兴趣可以自行测试。


EVALUATE的用法

Evaluate是一个可以实现文本算式批量计算的宏表函数,需要注意的是每个文本表达式不得超过255个字符,超过了255,常规计算返回结果为#VALUE!,下面演示一下它的具体用法:


1)、计算单个文本表达式


新建一个js的自定义名称,如下图所示:



在H23单元格输入公式:=js即可得到计算结果13




2)、计算多个文本表达式


计算多个文本表达式的话只需要把单元格改为文本表达式所在的单元格范围即可,具体步骤如下:



下乡拖拉公式即可:




GET.WORKBOOK的用法

语法结构:


GET.WORKBOOK(type_num, name_text)


Type_num 指明要得到的工作簿信息类型的数。


Name_text 是打开的工作簿的名字。如果name_text被省略,默认为活动工作簿。


类型数与其所代表的的含义如下:


1 正文值的水平数组,返回工作簿中所有表的名字。


2 通常返回错误值#N/A。


3 正文值的水平数组,返回工作簿中当前选择的表的名称。


4 工作簿中表的数。


5 如果工作簿含有发送名单,返回TRUE;否则返回FALSE。


6 正文值的水平数值,返回所有未接收到文件的接受者的名字。


7 以文本形式返回当前发送名单的主题线。


8 以文本形式返回发送名单的信息正文。


9 如果文件被发送,一个接一个被接收,返回1;如果全部一次被发送,返回2。


10 如果[发送名单]对话框中选择[返回送毕信息]选择框,返回TRUE;否则返回FALSE。


11 如果当前接收发送当前文件,返回TRUE;否则返回FALSE。


12 如果[发送名单]对话框中选择[跟踪状态]选择框,返回TRUE;否则返回FALSE。


13 工作簿[发送名单]:0 =不被发送1 =进展中的路径选择,或对于用户工作簿已被发送。2 =发送已完成。


14 如果工作簿结构被保护,返回TRUE;否则返回FALSE。


15 如果工作簿窗口被保护,返回TRUE;否则返回FALSE。


16 以文字形式返回工作簿的名称,不包括驱动器,目录或文件, 或窗口编号,等价于GET.DOCUMENT(1)


17 如果文件为只读,返回TRUE,否则返回FALSE。等价于GET,DOCUMENT(34)


18 如果表被写保护,返回TRUE,否则返回FALSE。等价于GET.DOCUMENT(35)


19 当前文件允许写的用户的名字,等价于GET.DOCUMENT(36)。


20 对应于显示在[另存为]对话框中的文件的文件类型的数字。等价于GET.DOCUMENT(37)。


21 如在[另存为]对话框中选择了[建立备文件]选择框,返回TRUE;否则,返回FALSE。等价于GET.DOCUMENT(40)。


22 如在[选择]对话框的[重新计算设置]标签中选择了[保存外部链接值]选择框,返回TRUE。等价于GET.DOCUMENT(43)。


23 如果工作簿有一个苹果开放合作环境(OCE)返回TRUE;否则返回FALSE。如未安装OCE(mailer),返回#N/A。


24 如果工作簿在最后一次保存后被改变,返回TRUE。若未改变(当被关闭,不提示保存),返回FALSE。


25 以文字形式水平数组,返回Power Talk(mailer)的To线上的接收。


26 以文字形式水平数组,返回Power Talk(mailer)的Cr线上接收。


27 以文字形式水平数组,返回Power Talk(mailer)的Bxx线上的接收。


28 以文字形式返回Power Talk(mailer)的主题。


29 以文字形式水平数组,返回Power Talk(mailer)的外壳。


30 如果Power Talk(mailer)从另一用户[*(相对于刚增加但不是发送)。


31 作为一系列数返回Power Talk mailer)被发送的日期和时间,如(mailer)未被发送,返回错误值#N/A。


32 以文本形式返回Power Talk(mailer)的发送者的名字,如(mailer)未被发送,返回错误值#N/A。


33 以文字形式返回显示在[摘要信息]对话框中的文件的标题。


34 以文字形式返回显示在[摘要信息]对话框中的文件的主题。


35 以文字形式返回显示在[摘要信息]对话框中的文件的作者。


36 以文字形式返回显示在[摘要信息]对话框中的文件的关键字。


37 以文字形式返回显示在[摘要信息]对话框中的文件的注释。


38 活动工作表的名字。


演示用法:


1)、所有工作表列表


新建一个自定义名称workbooks



在G32单元格输入公式:=workbooks得到如下结果



将公式改为=INDEX(workbooks,ROW(A1))即可得到所有的工作表名称



2)、获取工作表数量workbookscount


新建一个名为workbookscount的自定义名称



在G32单元格输入公式:=workbookscount得到如下结果



3就是此工作簿的工作表个数



其余的用法就不在意义演示


FILES的用法

这个宏表函数的用法就是获取指定目录下的某类文件类型名称


语法结构:Files(文件类型)


演示用法:


新建一个Excelfile的自定义名称,如下所示



在G32单元格输入公式:=INDEX(Excelfile,ROW(A1))并先下拖拽即可得到如下结果



GET.DOCUMENT的用法

语法结构:


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 指明文件类型的数


1 = 工作表


2 = 图表


3 = 宏表


4 = 活动的信息窗口


5 = 保留文件


6 = 模块表


7 = 对话框编辑表


4 如果最后一次存储文件后表发生了变化,返回TRUE;否则,返回FALSE。


5 如果表为只读,返回TRUE;否则,返回FALSE。


6 如果表设置了口令加以保护,返回TRUE;否则, 返回FALSE。


7 如果表中的单元格,表中的内容或图表中的系列被保护,返回TRUE;否则,返回FALSE。


8 如果工作簿窗口被保护,返回TRUE;否则,返回FALSE。


下面四个 type_num 的数值只用于图表。


Type_num 返回


9 指示主图表的类型的数。


1 = 面积图


2 = 条形图


3 = 柱形图


4 = 折线形


5 = 饼形


6 = XY (散点图)


7 = 三维面积图


8 =三维柱形图


9 = 三维折线图


10 = 三维饼图


11 = 雷达图


12 = 三维等形图


13 = 三维曲面图


14 = 圆环图


10 指示覆盖图表类型的数,同以上主图表的 1,2,3,4,5,6,11 和 14。没有覆盖图表的情况下返回错误值 #N/A


11 主图表系列的数


12 覆盖图表系列的数


下列 Type_num 的值用于工作表,宏表,在适当的时候用于图表。


Type_num 返回


9 第一个使用行的编号。如文件是空的,返回零。


10 最后一个使用行的偏号。如文件是空的,返回零。


11 第一个使用列的编号。如文件是空的,返回零。


12 最后一个使用列的编号。如文件是空的 ,返回零。


13 窗口的编号。


14 指明计算方式的数。


1 = 自动生成 有


2 = 除表格外自动生成


3 = 手动


15 如果在[选项]对话框的[重新计算设置]标签下选择[迭代]选择框,返回TRUE;否则,返回FALSE。


16 迭代间的最大数值。


17 迭代间的最大改变


18 如果在[选项]对话框的[重新计算设置]标签下选择[更新过程引用]选择框,返回TRUE;否则,返回


FALSE。


19 如果在[选项]对话框的[重新计算设置]标签下选[以显示值为准]选择框,返回TRUE;否则,返回


FALSE。


20 如果在 Options 对话框的[重新计算设置]标签下选择[1904 日期系统选择框,返回TRUE;否则,返回


FALSE。


Type_num 是21-29之间的数, 对应于 Microsoft Excel 先前版本的四种默认字体。提供这些值是为了宏的兼容性。


下列 Type_num 数值应用于工作表,宏表和指定的图表。


Type_num 返回


30 以文字形式返回当前表合并引用的水平数组. 如果列表是空的,返回错误值 #N/A


31 1至11 之间的一个数,指明用于当前合并的函数。对应于每个数的函数列于下面 CONSOLIDATE 函数中,默认函数为SUM


32 三项水平数组,用于指明 Data Consolidate 对话框中选择框的状态。如果此项为TRUE,选择选择框.


如果此项为FALSE,清除选择框. 第一项指明[顶端行]选择框,第二项指[最左列]选择框,第三项指[与源数据链接]选择框。


33 如果选择了[选项]对话框的[重新计算设置]标签下的[保存前重新计算]选择框,返回TRUE;否则,返回FALSE。


34 如工作簿定义为只读,返回TRUE;否则,返回FALSE。


35 工作簿为写保护,返回TRUE;否则,返回FALSE。


36 如文件设置了写保护口令,并以可读/可写方式打开,返回最初使用写保护口令存文件的用户的名字。如文件以只读形式打开,或文件未设置口令,返回当前用户的名字。


37 对应于显示在[另存为]对话框中的文档的文件类型。所有 Microsoft Excel 可识别的文件类型列于


SAVE.AS函数中。


38 如选择了[分级显示]对话框中的[明细数据的下方选择框,返回TRUE;否则,返回FALSE。


39 如果选择了[分级显示]对话框中的[明细数据的右侧]选择框,返回TRUE;否则,返回FALSE。


40 如果选择了[另存为]对话框中的[建立备份文件]选择框,返回TRUE;否则,返回FALSE。


41 1至3中的一个数字,指明是否显示对象:


1 = 显示所有对象


2 = 图和表的位置标志符


3 = 所有对象被隐藏


42 包括表中所有对象的水平数组,如无对象,返回错误值 #N/A


43 如果在[选项]对话框的[重新计算设置]标签下选择了[保存外部链接值]选择框,返回TRUE;否则,返回FALSE。


44 如文件中的对象被保护,返回TRUE;否则,返回FALSE。


45 0至3中的一个数,指明窗口同步化方式。


0 = 不同步


1 = 水平方向上同步


2 = 垂直方向上同步


3 = 水平方向,垂直方向上均同步


46 七项水平数组,用于打印设置,可由 LINE. PRINT 宏函数完成。


- 建立文字


- 左边距


- 右边距


- 顶边距


- 底边距


- 页长


- 用于指明打印时输出是否格式化的逻辑值,格式化为TRUE, 非格式化为FALSE。


47 如果在[选项]对话框的[转换]标签中选择了[转换表达式求值]选择框,返回TRUE;否则,返回FALSE



48 标准栏宽度设置


下列 type_num 值对应于打印与页的设置。


Type_num 返回


49 开始页的页码,如未指明或在[页面设置]对话框的[页]标签下的[起始页号]文字框输入了“自动”,返回错误值#N/A


50 当前设置下欲打印的总页数,其中包括注释,如果文件为图表,值为1


51 如只打印注释时的总页数。如文件为图表类型,返回错误值 #N/A


52 在当前指定的单位中,指明边距设置(左,右,顶,底)的四项水平数组。


53 指明方向的数字:


1 = 纵向


2 = 横向


54 文本串的页眉,包括格式化代码。


55 文本串的脚注,包括格式化代码。


56 包括两个逻辑值的水平数组,对应于水平垂直方向置中。


57 如打印行或列的上标题,返回TRUE;否则,返回FALSE。


58 如打印网格线,返回TRUE;否则,返回FALSE。


59 如表以黑白方式打印,返回TRUE;否则,返回FALSE。


60 1至3中的一个数,指明打印时定义图表大小的方式。


1 = 屏幕大小


2 = 调整到


3 = 使用整页


61 指明重排页命令的数:


1 = 先列后行


2 = 先行后列


如文件为图表类型,返回错误值#N/A


62 扩缩比,未指定时为100%。如当前打印机不支持此项操作或文件为图表类型时,返回错误值#N/A。


63 一个两项水平数组,指明其报表需按比例换算,以适合的页数印出 ,第一项等于宽度(如未指明宽度按比例缩放,返回#N/A)第二项等于高度(如未指明高度按比例缩放,返回#N/A)。如文件为图表类型,返回#N/A


64 行数的数组,相应于手动或自动生成页中断下面的行。


65 列数的数组。相应于手动或自动生成的页中断右边的列。


附注 GET.DOCUMENT(62)和GET.DOCUMENT(63)互相排斥,如果其中一个返回一个数值,另外一个返回错误值#N/A。


下列type_num数值对应不同文件设置。


Type_num 返回


66 Microsoft Excel for Windows 中,如果在[选项]对话框的[转换]标签中选择了[转换公式项]选择框,返回TRUE;否则,返回FALSE。


67 Microsoft Excel 5.0版本下,通常返回TRUE。


68 Microsoft Excel 5.0版本下,通常返回簿的文件名。


69 如果在[选项]对话框的[查看]标志中选择了[自动分页线],返回TRUE;否则,返回FALSE。


70 返回文件中所有数据透视表的文件名


71 返回表示文件中所有类型的水平数组。


72 返回表示当前表显示的所有图表类型的水平数组。


73 返回表示当前工作表每一个图表中系列数的水平数组。


74 返回控制的对象标识符,控制当前执行中的由用户定义的对话框编辑表中获得焦点的控制(以对话框编辑表为基础)。


75 返回对象的对象标识符,对象正在执行中的由用户定义的对话框编辑表中的默认按枢(以对话框编辑表为基础)。


76 以[Book1]sheel的形式返回活动表或宏表的文件名。


77 以整数的形式返回页的大小:


1=Letter 8.5x11 in


2 = Letter Small 8.5 x 11 in


5 = Legal 8.5 x 14 in


9 = A4 210 x 297 mm


10 = A4 Small 210 x 297 mm


13 = B5 182 x 257 mm


18 = Note 8.5 x 11 in


78 返回打印分辨率,为一个二项水平数组。


79 如在[页面设置]对话框的[工作表]标签中选择[草稿质量]选择框返回TRUE;否则,返回FALSE。


80 如在[页面设置]对话框的[工作表]标签下选择了[附注]选择框,返回TRUE;否则,返回FALSE。


81 做为一个单元格的引用,从[页面设置]对话框的[工作表]标签返回打印区域。


82 做为一个单元格引用从[页面设置]对话框的[工作表]标签回打印标题。


83 如果工作表为方案而被保护起来,返回TRUE;否则,返回FALSE。


84 返回表中第一个循环引用的值,如无循环引用,返回错误值#N/A。


85 返回表的高级筛选方式状态。这种方式顶部设有向下的箭头,如数据精单通过选择[筛选],再从[数据]菜单选择[高级筛选]被筛选,返回TRUE;否则,返回FALSE。


86 返回表的自动筛选方式状态。这种方式顶部有向下的箭头,如选择了[筛选],再从[数据]菜单选择[自动筛选],筛选向下的箭头被显示出来,返回TRUE;否则,返回FALSE。


87 返回指示表的位置的数字,第一张表位置为1。计算中包含隐藏起来的表。


88 以“book1”的形式返回活动工作簿的文件名。


演示用法:


1)、获取打印总页数


新建一个名为pages的自定义名称



在G67单元格输入公式:=pages即可得到如下结果



这个函数的类型号有点多,用法比较多,大家可以自行百度,这里不做详细介绍,只演示一下怎么用即可



之前罗列指定路径下的文件名称,一般都需要运用VBA才可以完成的,只要我们掌握了宏表函数FILES的用法之后,这样的事就变得轻而易举了,所以只需要掌握宏表函数,你也能够完成大神一样的骚操作!!!!


本文标签:excel宏教程(27)

相关阅读

关键词不能为空
极力推荐

ppt怎么做_excel表格制作_office365_word文档_365办公网