Excel2007版的常用功能(24):宏表函数:

宏表函数:

1. 宏表函数具备两个特点:

     a.  像宏      b.  函数

    宏表函数跟VBA语句一样,逐行地执行代码

  右键单元格--插入: 可以插入新的表格,也可以插入宏表。可以在宏表里写一堆代码,一行一行地执行。

2.  打开表显示日期的做法:

     =alert("今天的日期是:"&text(sheet1!A1,"yyyy-mm-dd")&char(10)&"距离项目结束还有"&sheet1!A2&"天")

     显示:  今天的日期是2014-06-08 距离项目结束还有7天

一、 利用宏表函数获取信息  

1.  get.cell()函数:

      get.cell(type_num,reference        表示 获取单元格信息,获取reference这个单元格的type_num这个信息

     reference   是提供信息的单元格单元格范围。 如果引用的是单元格范围,使用引用中第一个范围的左上角的单元格。如果                          引用被省略,默认为活动单元格。

    type_num   指明单元格中信息的类型。可能的值与对应结果:

(下表中的黑体字为常用参数)              
Type_num     返回
1 以当前工作区文字引用类型绝对引用左上角引用单元格。
2 顶部引用单元格的行数。
3 最左边引用单元格的列数。
4 同TYPE引用
5 引用内容。
6 文字,以工作区设置决定的 A1 或 R1  C1 类型引用公式。与 formulatext()函数功能一样
7 文字的单元格的数字格式(如“m/d/yy”或“General”)。
8 指示单元格水平对齐的数字
  1=一般              
  2=左对齐              
  3=置中              
  4=右对齐              
  5=填充              
  6=两端对齐              
  7=跨列置中              
9 指示分配给单元格左侧边框线的类型
  0 = 无边框              
  1 = 细线              
  2 = 中等线              
  3 = 虚线              
  4 = 点线              
  5 = 粗线              
  6 = 双线              
    7 = 发丝线              
10 指示分配给单元格右侧边框线的类型,对应指定返回值的描述参见 type_num 9
11 指示分配给单元格顶端边框线的类型,对应返回值的描述参见 type_num 9
12 指示分配给单元格底端边框线的类型,对应返回值的描述参见 type_num 9
13  是0至8之间的一个数字,当在[格式]菜单下选择[单元格]命令时,
[单元格格式]对话框的[图案]标签显示被选择的单元格。这个数字指明其模式。如模式未被选择,返回0。【注此处似有误。应为1-18之间的一个数。至[图案]的样式】
14 如果单元格被锁住,返回TRUE;否则,返回FALSE。
15 如果单元格中公式被隐藏,返回TRUE;否则返回FALSE。
16 一个含有两顶的水平数组,包括活动单元格的宽度和一个逻辑值,这个逻辑值指明单元格宽度是否改变,
如为TRUE,标准宽度改变,如为FALSE,仍为自定义宽度。
17 用点表示的单元格的行高
18 字体名称,文字形式
19 用点表示的字体大小
20 如果单元格中所有字符或只有第一个字母为黑体,返回TRUE;否则,返回FALSE。
21 如果单元格中所有字符或只有第一个字符为斜体。返回TRUE;否则,返回FALSE。
22 如果单元格中所有字符或只有第一个字符为加底线,返回FALSE。
23 如果单元格中所有字符或只有第一个字符为加删除线,返回TRUE;否则,返回FALSE。
24 是1-56的一个数字,代表单元格中第一个字符的字体颜色。如果字体颜色为自动生成,返回0。
25 如果单元格中所有字符或只有第一个字符为空心体,返回TRUE;否则,返回FALSE。
Microsoft Excel for Windows 不支持空心字体格式。
26 如果单元格中所有字符或只有第一个字符加阴影,返回TRUE;否则,返回FALSE。
Microsoft Excel for Windows 不支持阴影字体格式
27  指示单元格中能否进行手动分页线的数字。
  0 = 没有分页线            
  1 = 行              
  2 = 列              
  3 = 行和列              
28 行的级数(分级显示)
29 列的级数(分级显示)
30 如果所包含的活动单元格为摘要行,返回TRUE;否则,返回FALSE。
31 如果列所包含的活动单元格为摘要列,返回TRUE;否则,返回FALSE。.
32【注本条说明有误,点此链接】 如窗口只包括一个表,其文件名为不含扩展名的工作簿 的文件名,为包含单元格的工作簿或工作表的文件名,
以 BOOK1.XLS 的形式返回簿的文件名;否则,以"[BOOK1]sheel"的形式返回表的文件名。
33 如单元格被折行,返回TRUE;否则,返回FALSE。
34 是1-16之间的一个数,代表左侧边框线颜色。如颜色自动生成,返回零。
35 是1-16之间的一个数,代表右侧边框线颜色。如颜色自动生成,返回零。
36 是1-16之间的一个数,代表顶端边框线颜色。如颜色自动生成,返回零。
37 是1-16之间的一个数,代表底端边框线颜色。如颜色自动生成,返回零。
38 是1-16之间的一个数,代表前景颜色。如颜色自动生成,返回零。
【包括填充颜色和图案颜色】
39 是1-16之间的一个数,代表背景颜色。如颜色自动生成,返回零。【阴影背景?】
40 单元格风格,文字形式。
41 不经翻译返回活动单元格中的公式(用于图别设定的宏表)。
42 用点表示的活动窗口左边界到单元格左边界的水平距离,如果窗口滚动到单元格外,可能为负值。
43 用点表示的活动窗口顶边界到单元格顶边界的垂直距离,如果窗口滚动到单元格外,可能为负值。
44 用点表示的活动窗口右边界到单元格右边界的水平距离,如果窗口滚动到单元格外,可能为负值。
45 用点表示的活动窗口底边界到单元格底边界的水平距离,如果窗口滚动到单元格外,可能为负值。
46 如果单元格包含文字注释,返回TRUE;否则,返回FALSE。
47 如果单元格包含声音注释,返回TRUE;否则,返回FALSE。
48 如果单元格包含公式注释,返回TRUE;否则,返回FALSE。
49 如果单元格为数组的一部分,返回TRUE;否则,返回FALSE。
50  指示单元格垂直方向对齐方式。
  1 = 顶对齐              
  2 = 置中              
  3 = 底对齐              
  4 = 两端对齐            
51 指示单元格垂直方向。
  0 = 水平              
  1 = 垂直              
  2 = 向上              
  3 = 向下              
52 单元格前缀(或文字对齐)字符,如果单元格不包括任何内容,代表空文本(“”)。
53 当前显示的单元格的内容,文本形式,包括格式化单元格所加上去的数字或符号。
54 返回包含活动单元格的数据透视表视图的文件名。
55 返回数据透视表视图中单元格的位置。
56 在数据透视表视图中,返回包含活动单元格引用的字段名称。
57 如果单元格中所有的字符,或只有第一个字符被格式化为上标字体,返回TRUE;否则,返回FALSE。
58 作为显示在[单元格格式]对话框中[字体]标签定位单元格中所有的字符或只第一个字符的正文
返回字体风格,如 “Bold Italic”。
59 返回下加线风格的数。
  1 = 无底线            
  2 = 单底线              
  3 = 双线              
  4 = (single accounting)          
  5 = (double accounting)          
60 如果单元格中所有的字符,或只有第一个字符被格式化为下标字体,返回TRUE;否则,返回FALSE。
61 作为文本返回活动单元格数据透视表项的文件名。
62 返回工作簿和"[book1]sheet1"形式的当前表的文件名【注:应为“活动工作表”】
63 返回单元格的填充(背景)颜色
64 返回单元格的图案(前景)颜色。
65 如果[增加缩格]对齐选项处于开的状态( 只用于Microsoft Excel的远东版本返回TRUE;
否则,返回FALSE
66 返回包含BOOK1.XLS 形式单元格的工作簿的簿名。

2.  get.workbook()函数:

      get.workbook(type_num,name_text)     表示获取整个文件的信息,文件里有多少张表,每张表叫什么名字

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

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

Type_num     返回
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 活动工作表的名字。

3.  宏表函数的更新问题:

    有些宏表函数不会实时更新。

4.  单元格加链接:

    =hyperlink(地址,显示出来的名字)   这时直接单击单元格里显示的名字就可以直接跳转到链接所对应的网页上了

    如:  =hyperlink('http://www.163.com','网易')    单元格里显示'网易',点击网易,直接跳转到http://www.163.com
            地址还有别的写的形式 

   宏表函数不能直接在单元格里写,会显示无效,要先点住要写公式的单元格,在 “公式--定义名称” 中定义名称,在引用位置里写宏表函数的公式。用时,在单元格里写:=定义的名称  即可  如果宏表函数里写的是相对引用,拖动这个单元格,即可将公式运用到别的单元格

如:

   计算单元格的颜色:

   点B2单元格--公式--定义名称--名字:(随便起)计算背景色,引用位置:=get.cell(63,a2)

   然后在B2单元格输入: =计算背景色  即可得到A2单元格的背景颜色

如: 

   计算D列得出数字的公式:

    a.  点E2单元格--公式--定义名称--名字:提取公式(随意起),引用位置: =get.cell(6,D2)

         然后,在E2单元格输入: =提取公式,即可得到

    b.   =formulatext(某单元格)     得出某单元格的公式  (2013版)

例子:  算出单元格的颜色,标记某个颜色为某个数字,然后按数据排序,就可将有颜色的数据排序了

例子:  一个文件里有很多工作表,若想为这些工作表做个目录,并且点击对应目录可以直接跳到对应的表里,做法:

            get.workbook(1) 表示显示第一个工作表的名字

            index(工作表名,1)  表示显示所有工作表里的第一个工作表的名

            index(工作表名,row())    这样,将要取第几个工作表名与行号联系起来,拖拽函数时就更方便了。

           index(工作表名,row())&“a1”    表示链接到工作表里a1单元格  这个放在hyperlink函数里,作为链接用。

          接下来就是做超链接了: hyperlink(index(工作表名,row())&“a1”,) 

          对于有错误的单元格,可以设置出错时如何显示。平时出错时一般会显示 “#REF!” 

二、  宏表函数常见应用:

1.evaluate()函数:

    evaluate(formula_text)     计算函数的结果。

  如: evaluate(2*3     // 6  

   如: 在C2单元格里计算B2单元格里写的公式的值:

   点击C2单元格--公式--定义名称--名字:运算,引用位置:=evaluate(B2),在C2单元格里输入: =运算,即可得到结果

2. =reftext(active.cell())    得到一个当前点击的单元格地址

   active.cell() 是活动单元格,reftext(active.cell())得到的是活动单元格的地址

3.  =substitute(单元格,把单元格里的什么,替换为另一个东西,替换的是第几个)

    A2:99,98,97    =substitute(A2,",","+")     把A2里的逗号改成加号:    //  99+98+97

     =evaluate(substitute(A2,",","+"))  也就是=evaluate(99+98+97)   得出:294

    ="{"&A2&"}"         // {99,98,97}

    =sum("{"&A2&"}")     即: =sum({99,98,97})    可直接求和,{}表示声明{}里面是一组数据,而不是一个单元格里的字符串

如:

         

这里会用到find()函数。find(找什么,去哪里找,从哪里开始)     返回要找的东西在区域里的位置

=find(" ",A16)    // 会返回A16里第一个空格出现的位置:3

=find(" ",A16)+1        // 4

=find(" ",A16,find(" ",A16)+1)   // 会返回A16里从第4个字符开始后的第一个空格

=find(" ",A16,find(" ",A16,find(" ",A16)+1)+1)           //  10

=find(" ",A16,find(" ",A16,find(" ",A16,find(" ",A16)+1)+1)+1)       // 14

=substitute(A16," ","@",find(" ",A16,find(" ",A16,find(" ",A16,find(" ",A16)+1)+1)+1))  将第14个空格替换为@

或:

=substitute(A16," ",";")     // 11;12;113;154;15;16

="{"&substitute(A16," ",";")&"}"        //  {11;12;113;154;15;16}

=evaluate("{"&substitute(A16," ",";")&"}" )        //  把"{"&substitute(A16," ",";")&"}" 变成真正的数组,显示:11

=index(evaluate("{"&substitute(A16," ",";")&"}"),4)       //  取出数组里第四段数据

三、 拓展:

当某个单元格里写入函数: =一个区域的数据     这时这个单元格也许只会显示区域里的一个数据,用鼠标点住这个单元格再点击编辑栏时, 按F9键,编辑栏里的内容就会由函数公式变成了由选中的这些数据组成的数组。这就是这个单元格的真实的值。 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章