新增的 "工具" 主选项卡
不管是word还是excel 的2010 , 在进行编辑一些图片, 图表, 表格等工具的时候, 都会 "动态"的生成相应的 " xx 工具" 面板, 里面可能包含 " 设计/ 布局/ 格式"等 主选项卡 .
认识excel的图表 的各个区域
输入数据的时候, 可以直接输入:
=Sheet1!$A$5:$A$9,Sheet1!$C$5:$C$9
其中, 表示横坐标的部分放在前面, 表示纵坐标的部分放在后面, 中间用逗号分隔. 不管是纵横坐标, 都要指明 工作表sheet. 指明区域的时候, 要把 "列的字段名 单元格" 也要包含进去, 就会 自动识别字段名和数据. 当然也可以直接用鼠标进行拖选 , 这样 来 "选择数据" 区域, 更快更好. 但是也要注意, 一定要把 列字段名称 也要包含进去.误差线和趋势线, 在有些比较实际工作中的例子, 要求给出允许的 正负 误差, 偏差 或 趋势, 就要 绘制 这些 趋势线和 误差线....
输入数据时, 快速的移动光标:
tab水平方向移动; ernter竖直方向移动; 而选中某一片区域, 然后一直按enter , 将会自动在 这篇区域中上下左右移动.
如果表格的字段太多, 还可以通过 "表单" "记录单"" record form"的方式 来输入excel中的数据
- 好处是, 一条记录在一个表单 对话框中完成 , 注意切换用tab, 不要用enter. enter直接就 完成当前这一条记录的输入了. 还可以进行 "条件" 的 查找和过滤操作.
- 要将 "记录单" 命令, 放在快速访问工具栏中. 在 自定义 工具栏-> 不在常用命令中的 命令 ...
单元格的名称使用
- 定义了单元格名称后, 可以使用这些名称进行运算, 如同 使用 选择单元格区域 一样 . 但是使用名称 后, 要 方便/好记得多.
- 还要注意, 单元格名称的 有效范围, 是整个工作簿还是 其中的 某一个 工作表...
单元格的选择性粘贴, 还可以粘贴为 图片, 或 者 链接图片...
如何输入分数?
- 可以先选择 格式为 分数, 然后再输入
- 也可以, 按格式:
带分数的整数 + 空格 + 分数
这时候, 会自动识别为 分数. 但是, 这种情况 只适合 分母为1个数字的情况, 如果是多个数字的分母, 则要 "数字"对话框 中进行设置.
冻结窗格?
- 有三种冻结方式: 冻结拆分窗格, 冻结首行, 冻结首列. 但是 感觉 最有用的还是 冻结拆分窗格, 因为只要 选中要 冻结的 "始终要显示的部分" 然后选择冻结.就好...
- 要冻结某行或某列, 一定要选择 改行的下一行, 或 右边一列, 并不能选择 当前要冻结的 行或 列... 否则, 实际冻结的并不是 当前选择的行...
拆分窗格的作用? 主要是用在 要同时查看的 两部分, 但是如果不拆分, 那么 由于滚动, 就看不到了 这时候 就需要拆分窗格了.
- 要同时查看, 列数很多的表格的时候, 要同时查看 前面的列和后面的列的时候.
- 要同时查看 表中前面的记录 和 表格最后的记录的时候, 可以 拆分.
- 拆分的方法是: 选中某个 要拆分的 , 合适位置出的单元格, 然后 单击 "拆分即可"...
- 拆分的窗格, 可能是两个, 也可能是4个, 如果要得到 两个: 则选择 靠近 第一列的 单元格, 然后拆分; 如果 选中的是 中间的 非第一列的 单元格, 则拆分得到的是 4个窗格.
杂项
- 默认的, 凡是以斜线分隔的 数字, 都会被看作是 日期, 如 1/2, 10/2 会自动转换为日期: 1月2日...
- 关于单元格边框, 最重要的是, 可以设置 单元格 的内边框和斜线边框 的颜色, 和 外边框的颜色, 这两种颜色可以是不同的!!!
- 锁定单元格生效的前提是: 在"审阅" 选项卡的 更改 组中设置好 "保护工作表" 才行.
excel中的 插入-> 表格?
- 快捷键是 ctrl_t, 并不是插入一个普通的表格, 而是将原来的表或 一部分数据 转化为 可以进行排序, 筛选的可扩充的表单.
- 如果有标题字段, 一定要勾选 "包含标题行", 否则会把 标题字段也作为数据, 并且会在 顶端 增加 "列1", "列2"...
- 表格的镶嵌, 是指表格的行 或列 交替 间隔进行 不同颜色的填充, 目的是使显示更明显...更便于阅读...
- 对表格中的数据, 要进行多个字段 排序, 就要使用 " 数据" -> "多字段排序"
- 自定义排序:
自定义排序的地方, 在 排序对话框的 "次序"下拉列表框 里面
在office, excel中 要表示特殊字符 如: ? * 本身, 就要对其进行转义, 转义的方式 是在其前面加上 波浪线, 如~?, 注意不是 加反斜杠!!
excel中的筛选和高级筛选?
筛选的操作比 排序更简单. 只要单击 筛选按钮 就好了. 然后 在字段的旁边, 出现一个 向下的 三角形 表示 筛选.
注意包含 != 等于. 很多时候, 默认的排序和筛选条件是 "等于" "全等"
**最重要的是 , 多个条件的 与或或 筛选. 就要使用 高级筛选 ** 高级筛选: 由于 条件太复杂, 所以 使用 条件区域来表示. 条件区域的格式: 字段 -- 条件 按列上下表示(为什么呢? 因为 通常来说, 对于表格来说, 比如数据区域, 同一行水平排列的总是 字段 / 标题, 而数据总是 放在 字段的下边的, 在同一列里面..., 而且, 字段是标题, 条件是 字段的值; ). 多个条件依次按列排列.
在同一行的条件 表示 逻辑 与And, 而在不同行 的条件, 表示 逻辑或Or
然后 用高级筛选的时候, 包含两个区域, 一个是要进行高级筛选的数据区域, 另一个区域是 指定的条件区域...
最后筛选的结果, 你可以在 原来表格的位置 显示, 也可以 生成 显示到 其他位置...
下面就是一个表示 条件的 条件区域的例子.
excel中的区域
- 字段所对应的 具体内容, 就叫做数据区域
- 区域实际上就是 一些单元格的 集合. 可以连续, 也可以不连续
- 区域实际上 就是 " 名称". 使用 "公式" -> 中的 名称管理器 来 管理, 可以使用 名称/ 区域来进行 各种 运算...
关于excel中的 数据透视图?
excel中的三大主要点就是 排序, 筛选和 透视表. 透视图的理解跟透视表是一致的, 而关于透视图的 格式的设置 跟 前面的图表的设置又是一样的
透视表包含 筛选字段部分 和 下面的行-列 -数据值 字段部分, 中间隔一行. 注意 , 中间的那一行不属于 透视表. 在透视表中, 你可以移动整个 透视表(在 透视表工具->选项), 但是 你不能在透视表中插入/删除 一部分单元格. 因为这些单元格实际上是受excel控制的, 相当于 "域" 你不能自行编辑的.
如何显示 "透视表字段 列表"窗格. 默认的, 只要你把 鼠标 放在 透视表的 所属区域, 就会自动 显示 透视表字段列表 窗格. 放在透视表所属区域外 , 就自动隐藏
字段列表窗格 包括两个部分: 字段节/区域节 . 两个节的排列方式有: 字段节和区域节 层叠/ 并列/仅 14区域节/仅22区域节... 因为区域节最多只有4个区域, 所以布局方式就只有14 或 22了
透视表最多只能包含4个区域(一个区域可以有多个字段): 行标签区域, 列标签区域, 数值区域, 报表筛选区域.
每个区域的字段名称都可以自定义设置... 而且, 当 "报表布局" 为 大纲形式 或 表格形式 的时候, 将会显示自定义 的 行标签和列标签 字段的名称. 但是, 如果用压缩 形式来布局的话, 将会显示"行标签""列标签" 而不显示自定义的字段名称.
行标签的 数据 是一列数据, 列标签的结果 是 一行 数据. 而值的 表现是 跟 在一条记录中, 跟当前行行数据和列数据 相对应的 值, 注意, 这个值只是一种对应关系, 不一定有什么实际意义.
关于 透视表的理解: 要把透视表, 也看作是 二维表格, 而且是, 有意义的 表现意图的二维表格, 所以, 你在布局报表字读的时候, 你就要思考 各个字段 该怎样布局, 而且能够想象布局出来 的结果...
当然 每个区域的字段 都不是必须的!!! 通常的布局是: 行标签字段 + 值字段 , 列标签字段+ 值字段, 行标签+列标签+值字段的布局用得比较少 , 因为通常用的较多的 "行标签字段 + 值字段"布局中 的值字段 就会 形成 传统表格的 "列"..... 而报表筛选 字段跟上述无关, 基本上你想筛选就筛选. 还可以 选择 是 进行 "行汇总"还是 "列汇总"...**重要的是, 要使用 透视表, 只能是针对 有规则的, 规范的二维表格, 而不能是 有什么合并 分隔的 混合表格. **
所谓分类布局, 不管是各种sql数据库, 还是 excel中的数据而言, 首先数据要 规范满足一定的条件, 毕竟是电脑不是人脑, 否则不可能是什么东西/对象 都可以用分栏汇总的吧. 所谓的分类汇总, 就是 针对 具有相同字段的记录 (比如学生成绩表, 对于 相同 "班级" 字段的值, 比如都是 "一班"的记录), 把他们对应的 "数值型" 字段的值 进行 求和/平均值/最大值等 汇总计算( 所谓的汇总/聚合, 就是针对这些记录 进行常见的 "求和/计数/平均值/最值" 运算. 基本上就是这几个计算了, 还有偏差和方差, 但是后面的两个基本上很少用).
杂项
excel在 选择 表格 单元格, 区域的时候, 很多时候, 用不着单击 "右边的单元格"图标, 直接用鼠标在 数据区域单击或拖动就好了, 会自动 "识别并放入到 选择区域中"
在设置 透视表的 数据 项时, 只需在 标签字段上 双击就可以 在 弹出的对话框中修改 汇总类型
当以 "默认的 压缩方式 "显示 透视表的时候, 即使是数字, 也是 左对齐的方式, 改变为 "以大纲形式/表格形式显示"的时候, 才是 数字右对齐
最重要的是, 对数字/数值进行 分组的时候, 有时候, 会说 无法分组, 或显示错误, 那么可能 是进行了错误的 操作, 这时候, 只要 把 原来的 透视表 完全删除后, 在 选择 "创建分组"就可以 正常使用了: 分组时, 会 自动填入最小值和最大值...你需要修改...
如上图所示, 为了 统计分数分段 个数, 所以 选择的布局 就是有意义的: 行标签+ 数值字段, 而且两个字段都是一样的, 都是 分数字段. 所以 说, 在进行报表布局的时候, 你自己要思考一下, 该怎样进行 字段的 组合 和布局....
可以同时 显示多个 汇总 类型, 只要 将 多个字段 拖入 数值 区域就好了. 多个汇总类型, 对与 数据分组 也是 适用的. 而且可以修改 汇总字段的名称. 只要不和 已有字段 名称重复就可.
特殊格式/自定义 数字格式? 甚至说, 你在 运用 excel表格 时候, 也要有 数据类型/变量类型 的 编程里面的 思想思维的话, 就很简单易懂了.
就是 同样是 数字, 你可以对他进行 自定义格式的 设置. 比如 你可以在数字后面加上 两个汉字"积分", 这个时候 , 该单元格的内容 "变量类型" 仍然为 数字, 所以 仍然可以 用数字 相加等 四则运算, 而如果是 单纯的 文本类型, 进行四则运算的时候 就会报错 #value.
在进行 某些特殊 格式输入的 单元格情况下, 为了避免出错, 可以事先 定义好 "数据有效性规则" , 来规定文本的长度, 数字的 大小范围, 甚至 用 "序列" 还可以规定 输入的值只能是那些指定的值, 即 得到 下拉菜单的 效果.
vba与宏
vb是.net中的一种编程语言, vba是 专门用于office中的 vb for application, vbs是类似于js的一种前端脚本.
vba中的 模块 包含: 子过程即sub, 自定义函数function, 属性property: 分get let. 而且 sub, function, property等都分 共有和私有. 也就是说, 模块是包含 函数/过程/属性的. 而且 系统会自动将 每个函数/过程/属性用 直线 分隔开.
模块中 , 主要是 放 全局的 函数和 全局变量, 供所有模块 所共享使用, 就类似于 tp中的 functions.php中的函数一样. 因此, 多个模块的话, 通常是没有必要的, 除非你 要对 全局函数 进行 分类分使用目的等(比如 模块1中的函数 专门用于 窗体1, 模块2中的函数 专门用于 窗体2..) 进行存放的时候, 才有必要创建多个模块.
类模块就是 创建自定义对象: 类
类是具有相同属性的对象的集合。函数只是简单的一个过程,而类模块里可以集合众多函数过程,想用的时候直接调用。说通俗点,简单问题函数解决,复杂问题类模块解决。
实际上, 模块可以分为 窗体(模块), 普通模块, 类模块. 窗体模块有界面, 有事件(单击/双击/鼠标事件等) . 类模块也可以有事件, 只是没有界面而已.
关于vba中的大小写: 凡是 vba中的关键字, 都是采用首字母大写的方式, 其他不要求, 当你 用小写字母书写时, 会自动转换为首字母大写.
vba 中的 窗体, 其实就相当于 一个 自定义 对象而已, 因此, 他里面的 方法和 事件, 实际上 就是 "表单窗体"这个 类的 私有private 方法了. 所以用 Private sub 控件名称_事件(...) ,, 注意格式 一定要是 控件名称_事件(...) , 事件的大小写无所谓 , 但是 中间一定是下划线, 而且事件必须是有效的. 否则 , 就只是 窗体 对象的 一个自定义 方法成员 而已. 而模块中的函数等由于是供其他模块 共用的, 所以通常定义为 public.
Private Sub btn2_DblClick(ByVal Cancel As MSForms.ReturnBoolean) //
Static x As Integer
x = x + 1
tb.Text = x
End Sub
要快速打开 office的选项 对话框, 不一定要从 文件->选项, 可以在功能区上右键单击-> 自定义功能区即可.
关于文档属性和个人信息, 与文档检查器.
- 产生的原因: 当我们将文档与 其他人共享的时候, 为了保护我们的隐私( 如 文档属性: 文档标题, 文档标记; 或者个人信息: 如作者, 连续电话等) , 可以在 设置 勾选: 在保存文档 时 删除个人信息. 这些 个人信息就是通过 文档检查器 进行删除的. 文档检查器 会检查这些项目: 批注和注释/ 文档属性和个人信息/ 页眉和页脚/ 隐藏的单元格/ 隐藏的工作表 等等.
但是, 如果文档中 包含: 宏, activex控件, xml 扩展包信息 或 web组件, 这时候, 虽然可能包含个人信息, 但是 文档检查器 却并不能删除这些信息, 因为, 文档检查器只能 检查和删除上面所提到的那些 信息. 因此 就会产生这样的警告信息.
- 去除的方法就是: 保存时不删除 这些个人信息: 在 "信任中心" -> " 信任中心设置" -> 取消勾选 ....
Private Sub btn_DblClick(ByVal Cancel As MSForms.ReturnBoolean) 中的参数的意思: 参考: http://www.excelforum.com/excel-programming-vba-macros/475439-byval-cancel-as-msforms-returnboolean-print.html
Rob Bovey
Re: "ByVal Cancel As MSForms.ReturnBoolean"
MSForms.ReturnBoolean is a class exposed by the MSForms type library.
This class has only one property, the default Value property. The purpose of
an MSForms.ReturnBoolean variable is not to pass any information into an
event it's to allow you to pass information back to VBA telling it whether
or not you want to cancel the current operation. Setting the Cancel = True
(the equivalent of Cancel.Value = True) means you do want to cancel the
operation. Setting Cancel = False or leaving it with its default value of
False means you don't want to cancel the operation.
-----------------------
Tom Ogilvy
Re: "ByVal Cancel As MSForms.ReturnBoolean"
Your code would be what sets the cancel to true. You will find this in
events usually starting with Before (你通常会在 以 "before" 开头的事件中, 看到cancel的用法) . for example, in the BeforeSave event
you might (may是 "可以"表示许可的意思, 而might是 "可能" 的意思) run code to check if all required cells are filled out. If they
are not, you might have your code do
Cancel = True
and then the workbook won't be saved (the action which triggered the event
to run is cancelled). (所谓的cancel取消, 是取消当前 事件, 主要是 : 保存文件, 和 关闭窗体/窗口/文件/程序 这两种事件, 其他事件中基本没有多大意义)
So it will always be passed in as False. You routine has the option of
setting it to true if you want to cancel the normal action which would be
performed in response to the action that triggered the event.
在DblClick事件中的 cancle?
dblclick事件发生前, 会 依次发生: mouseDown, MouseUp, click, 然后再来一个循环, dblClick. || 这个事件中的 cancel是说, 是否忽略 第二次单击事件. 主要是用在 " 切换"操作上 . 如果cancel=true, 则忽略第二次click事件, 实际上就等于一次click 一次切换. . 否则 cancel=false(默认的) 就会切换 两次.
英语的语法, 是 先写主干, 然后再用各种 ing, ed, to do 等短语在后面来修饰它. 跟中文的不同, 中文的修饰语通常是放在主干的前面的.
vb/vba中 函数和过程的区别?
严格地说, 不是函数和过程的区别, 因为过程 就包含了函数! 过程 = 子程序 + 函数+ 属性, 所以 准确地说, 子程序Sub 才是我们所说的 过程.
代码段 分函数和过程, 这也是一种历史的原因, 也许只有vb/vba "语言 "才有这种变态的做法. 而且 不用 {} 来表示代码段, 用 keyword .... end keyword 的方式 来表示也是历史原因...
-
都可以传递参数, 而且参数的传递方式都可以有 byval, 和 ByRef两种方式, 区别是:
- 关于返回值, 过程没有返回值, (要想变态的返回值时, 使用 byRef方式) , 函数有返回值, 然而 函数的返回值 不能 用return语句 只能用函数名 赋值的方式;
- 使用方式上, 过程 可以单独/直接调用, 而函数 只能作为 表达式的一部分 即 = funcName(para1, para2...)的方式来调用.
- 调用过程 使用 Call SubName(para1,...) 或 SubName para1, para2, , call必须用括号, 不用call就不能使用 括号.
- 定义时 函数有返回类型说明 Public function funcName(para1, para2,...) As Double . 过程不用.
vba中如何创建类 : 参考: http://zhan.renren.com/accessoft?gid=3602888498036738172&checked=true , http://www.excelpx.com/thread-169168-1-1.html, http://www.pooban.com/html/71/n-67671.html
- 实际上, vba中的类, 名字在 类的属性 中修改, 类的定义 ,并不需要像其他语言一样, 用 class clName {.... } 来声明. 你只需要在 类模块的右边窗格中, 直接写 类的成员变量和 成员方法就可以了.
- 类的成员变量private或public都可以, 定义格式是在变量名后面加$, 如: private age$
- 类的成员方法, 是用Sub和function来定义, 不需要返回值的用 Sub来定义..., 需要返回值的用 function来定义...
msgbox和inputbox
- msgbox可以做函数也可以做sub, 实际上, vba定义了两个msgbox, 语法是: msgbox (prompt, [buttons], [title], [context]). 主要的就是: 提示, 消息框上包含哪些按钮或图标, 标题.
- inputbox是输入提示框: 是一个函数,因为必须要有返回值. input(prompt. [title], [default] , [x,y的坐标值]).
关于vba编程的说明
- 同一个vbaProject 工程 下的所有 公共的 对象/窗体/模块pub函数库/类, 相互间是可见的, 都是可以互相访问和引用的.
- 这里 , uf1的 UserForm_Click()事件处理子程序 , 虽然是一个private的过程, 但是它可以(但是反过来, 别人就不能访问它) 直接调用 模块pub中的 公共子程序 useCls. 在useCls中, 先创建一个类对象Person. (注意, 这里的创建一个 类实例=对象, 不是采用赋值的方式, 而是利用类似 C++ 的 定义对象变量的方式, 使用的是 dim person As New Person. ) 然后通过 对象的公共接口, 设置对象的私有属性age, 然后通过msgbox 显示对象的私有属性( 注意msgbox中的 图标buttons, 像vbInformation, vbCritical等图标中就包含了"ok, cancel'等图标, 不必再指定其他图标, 也就是, 只能是一个值).
'注意窗体对象的 名称name(可以在代码中引用的就是name), 标题caption(只是显示而已),和编程中的UserForm(是关键字)是不同的
Private Sub UserForm_Click()
useCls 20
End Sub
----------------------
Public Sub useCls(age As Integer)
Dim p As New person
p.setAge (age)
MsgBox "人的年龄是:" + p.getAge, vbInformation, "调用Person类"
End Sub
--------
'类模块对象 Person
Private age$
Public Sub setAge(ag As Integer)
age = ag
End Sub
Public Function getAge()
getAge = age
End Function
工程的结构是:
杂项
- option explicit: 表示 模块中的所有变量 都要 用 dim/ public/private/redim中的一个做 显式的声明. 否则在编译的时候会报错: 变量未声明. 即不允许使用 没有声明过的变量...
- code窗口中的 "通用" 和 "声明" 是什么意思: 通用是针对左边的下拉菜单中的 对象(可能是 btn1, edit1, UserForm表单窗体本身) 类型 来说的, 如果 当前光标 所在的位置区域 , 什么都不属于, 不属于 前面的表单窗体中的任意一种控件类型. 那么就会显示 为 "通用" general. 即通常的, 不是什么特殊的 控件对象. 右边的下拉菜单(可以是控件的事件 类型, 如click, dblclick, mousedown, 等等) , 光标所在的 区域 代码, 不是任何事件, 那么就是声明. 声明的类型 包括: 最前面的option, public var as single, private sub sub_name... 以及 属性 代码段都是 "声明"
excel中的vba的默认 对象?
- book和sheet的区别, book叫 "工作簿" , 就像是一本书一样, 可以有很多页. sheet是 纸张, 单张纸, 就像是书中的 一页. 所以 book 是多个sheet 的集合.
- sheet包括: 工作表worksheet, 图表chart, 宏表macro, 对话框 四种类型. 所以 sheets 是所有类型的/所以形式的表的集合, 而worksheets是 工作表的集合
- 一个vba默认的对象 就包括: sheet1, Sheet2, sheet3, ThisWorkbook四个对象. 或者说是 四个标准模块, 可以直接在 这四个模块中写东西. 包括各种sub, function等等, 而且 通常是Public的, 可以互相引用. 同一个sheet中, 可以相对引用 单元格地址; 如果是引用其他对象 sheet中的 对象, 要用绝对引用...
在excel编程中 的 单元格或单元格区域, 可以用range类型表示, 值用 val()函数取其值: addone(x as Range) as Double { addone = val(x) +1 }
- Range本身也是一个对象, 可以有很多操作: Range("a1:c5").select, .copy....
- 选择单元格, cells(i,j) 而range("字符串a1"). 没有cell和ranges 的对象????
- 选择一行或一列: Range("1:1"), Range("a:a").select
- 对同一个对象的 多个属性进行操作, 可以使用with ...end with. 其中 with就表示 "对...进行操作"的意思:
with Range("a1:c3").Font
.Size = 17
.ColorIndex = 23
.FontStyle= "bold"
end with