Table of Contents
General Hacks
很抓狂的一点就是,对于开发人员而言,微软尚提供了较为系统化的帮助文档(见下文),而对于一般用户,找了半天竟没看到有系统化、框架化的帮助文档。在微软的网页版帮助页面,只有一个搜索框,完全去中心化。唯一可能算得上系统化框架化的帮助文档,是在本地电脑安装版本的Excel中,点击“帮助”按钮出来的帮助文档,这个勉强可算得上一个中心化的帮助文档,但实际上也没有提供一个系统化框架化的完备帮助文档,很多重要的概述性文章还得在其中的文章中单独链接过去。
数据分析处理功能
Excel(工作表)函数
分类汇总
数据可视化
有一个体会是如何对高维度数据属性实体进行比较分析。
简单的大于小于可以在一个维度上对数据进行比较,列出二维表格可以在两个维度上对相关实体进行比较
读研时曾在“财报分析与估值”课程上遇到过一个高维数据比较分析的问题,当时也是醉了:用气泡图一次性可以比较四个维度的数据:首先对维度A排序,挑选出紧挨着目标公司的潜在可比公司。然后对剩下的三个维度画气泡图。气泡图的横纵坐标可以代表两个数据维度,气泡的大小又可以代表一个维度
高级数据分析处理
Excel中,文件-选项-加载项,内有一些扩展包,于是在Excel”数据“功能菜单中出现”数据分析“、”规划求解“等加载宏工具。可以部分实现Eviews等统计分析软件的功能。
Visual Basic for Application
Visual Basic for Applications language reference for Office 2013
Excel 2013 开发人员参考(注意其中非常重要的对象模型)
Office 2013 VBA Documentation下载
注意:在此处所下载的Office Shared 2013 Developer Documentation.chm包括了上述Visual Basic for Applications language reference for Office 2013的离线版;Excel 2013 Developer Documentation.chm即为上述Excel 2013 开发人员参考的离线版。
Visual Basic Environment
- VBE(Microsoft Visual Basic Editor,Visual Basic编辑器,VB编辑器)就是我们设计、调试VBA代码的编辑器,它是捆绑在Application(如WORD,EXCEL,OUTLOOK)应用程序中的一个程序。
- VBAProject:大多数的Office程序都包含VisualBasic编辑器,它是用来创建、修改和管理Office宏的一种环境。宏中包含的代码通常以关键字Sub开头并以关键字EndSub结尾(此代码也就是所谓的“子例程”)。“模块”是由一个或多个宏或子例程组成的,“工程”则是由一个或多个模块组成。
- 在VBE(vironment)中的atpvbaen以及SOLVER之类的,实际上是“加载宏”。在加载项中将加载宏都取消勾选,则它们就都没有了。
- VBA不区分大小写 VBA不区分大小写,所以尽管以任意大小写编辑。但是,实际上VBE会自动将其调整成符合VB习惯的大小写方式。例如,输入“Msgbox”,一回车,VBE就将其自动调整成为“MsgBox”。
- 等号与数之间没有空格,VBE会自动帮你空格。
- 只输入
sub test
,VBE会自动帮你生成
Sub test() End Sub
- 然而,你输入if,VBE除了自动帮你将其首字母大写外,并不会帮你自动匹配上End If。但另一方面,If语句必须有配对的End If语句。对嵌入式 If…End If 语句而言,必须确保每个封闭的 If…End If 结构中,应有配对的 If…End If 结构。
语句
- rem语句:remarks;单引号
'
也可实现注释 - VBA允许使用复合语句,即把几个语句放在一行中,各语句间用冒号“:”分隔,一条语句也可分若干行书写,但在要续行的行尾加入续行符_
- With语句:给同一对象多个属性连续赋值
变量与常量
=
是给实际变量赋值,包括对象的属性;:=
是给函数或过程的参数赋值。
dim、static、public、private
dim,英文全称dimension,在VB中则延伸dim用来定义变量:Dim 变量 As 变量类型
。
定义变量可以使用显式或隐式两种方式定义:
- 显式定义:
Dim 变量名 As 类型
- 隐式定义:使用类型说明符
类型说明符如下:
- %——整型
- &——长整型
- !——单精度浮点数
- #——双精度浮点数
- @——货币型
- $——字符串型
举例:dim a$
语法等同于dim a as string
在模块前加入Option Explicit语句,将强制声明所使用的所有变量
常量
注意:无论是VB预定义的常量还是Excel预定义的常量,它们都是在各自对象模型中的Enumeration Object中给出。
过程
子过程(Sub)
过程是脚本语言的共性。在JavaScript中,甚至都不需要显式地声明Sub,直接用语句下达具体操作指令即可。
从其它过程调用一个过程(Sub)时,必须键入过程名称以及任何需要的参数值。Call语句可有可无,如果使用它,则参数必须以括号括起来
函数过程(Function)
函数可以有返回值,而子过程则不可能有返回值。
子过程与函数过程的调用
属性过程(Property)
模块
标准模块
标准模块由一个个的声明和过程构成。
类模块
类模块就是构造对象实例的蓝本
Excel对象模型
VBA内置函数与Excel工作表函数
Visual Basic for Application for Excel中有两种函数,一种是VBA内置函数,一种是Excel工作表函数(亦正是前文所述的“Excel函数”)。
要讲清这个,可能需要涉及到寄生语言与宿主语言的关系。以典型的寄生语言JavaScript为例,根据ECMA规范,JavaScript(或更官方的称谓:ECMAScript)作为一种寄生于某种宿主环境中的语言,可以给宿主提供脚本化能力,而JavaScript本身在宿主以外并不能独立运行。
ECMA规范给定了Core JavaScript API的工具函数和通用对象模型,而在具体的宿主环境中,宿主则会具体给出特定的对象模型以供ECMAScript来操作。例如,在浏览器环境中,作为宿主的浏览器就会给出具体的Client-Side文档对象模型;而在Flash Player环境中,作为宿主的Flash Player则会给出其自身的对象模型以供JavaScript的变种——ActionScript来操作
尽管Visual Basic本身作为一种可编译运行的语言,其不必依赖于具体的“Application”而存在,但具体到Visual Basic for Application,一般就只能是在宿主环境,也就是各种具体的Application,例如Excel、Word中运行了。因此,作为一种独立语言的VB有其核心的内置函数与相关对象,而其寄生的宿主亦提供一套对象模型以供VBA来操作,在Excel中,这套宿主对象模型就是前述“Excel对象模型”(其实还包括Microsoft Office通用对象模型)。
VBA内置函数就是属于core language API中的,而Excel工作表函数则是在Excel对象模型中,作为WorksheetFunction Object的Method来给定的。
SQL应用
VBA中使用SQL语句
在MS Office Access中使用VBA
参考一下ACER电脑上excel2010的vba帮助文档与excel帮助文档,并借助这个框架说说总体的应用框架
同时看看这两个帮助文档有没有实体文件,与之前下载的vba官方手册可以一起