如何能有效地学习 VBA?
为什么要学VBA?
用好VBA的话确实可以给你再办公室的工作效率带来质的提升。如果有人跟你说你可以用Python什么的语言处理Excel balabala的,你可以无视他了。毕竟就题主的描述看题主并不是计算机专业人员,只不过是为了提升自己的效率而已,说白了只是为了实用的目的学的。
学VBA学什么?
那么VBA应该怎么学呢?当然VBA可以有很高级的用法,但是以题主的目的来看,其实VBA对题主有两部分的内容:Visual Basic的语法和Excel的对象模型体系。如果这两部分都搞懂了,实践中遇到问题,上网搜搜就可以了,推荐Excel Home。
零基础怎么办?
但是,题主是0基础,这个怎么办呢?嗯,录制宏是个好玩意儿。当你不知道某个要实现的功能该怎么写的时候,先把手动做的过程录下来,再把录制的代码修改修改就可以了。怎么录制宏?以Excel 2010为例“文件->选项->自定义功能区”,然后把开发工具勾上。接着点“录制宏”,之后你想做什么就做什么就好了,做完结束录制,你需要的代码就都录制好了。
嗯嗯,这个做法不错。那么摆在题主面前的最后一倒大关是什么呢——编程的基本概念。那么编程的基本概念是什么呢?那理论多了,大神们可以说个没完没了。不过,题主可以宽心,学个VBA,你需要了解的其实只是一个中心——“变量”,两个基本点——“过程和函数”和三个代表——“顺序、判断、循环”。只要你建立了这些概念,就可以开始边练边学了。这几个概念建立需要多长时间?读完我的回答就可以了。
好的,我开始BALABALA了。
一个中心——“变量”:
VBA和C语言一样都是命令式的语言,变量是你执行计算的中心,也就是我们编程的过程,多数时候是在对变量进行加工。这个概念就好比数学里面的函数,有个原变量,函数加工之后就得到了因变量。比如我要求平方:
Dim X as Integer
X = 5
X = X * X
上面的代码里面X就是个变量,X = 5是给X一个初值,X = X * X就是对X进行的加工,也就是求平方。
两个基本点——“过程与函数”
VBA区分过程与函数,实际上这两个货基本一样。函数是什么?这里的函数,其实和数学的函数很像,把变量丢进来(参数),产出就函数的返回值。还是举平方的例子:
Function Square(Num As Integer)
Square = Num * Num
End Function
Sub Fun1()
Debug.Print Square(5)
End Sub
很简单吧?函数就是Square,和函数同名的变量就是你要返回的值。把变量Square的值设置为你要返回的值就可以了。过程呢,也就是Sub,其实就是不返回值得函数。上面的过程Fun1里面调用了我们写的函数Square,传入了一个参数5。
三个代表——“顺序、循环、判断”
既然题主对公式里面的IF什么的比较熟悉了,那么下面的内容应该不难理解。
“顺序”是最基础的语句执行模式,说白了就一句接着一句的执行。上面代码就是顺序执行的一个例子。先赋初值给X,然后再求平方。
“判断”呢,就是说,根据某个判断结果,来选择执行那些语句:
If X > 5 Then
' Do something
Else ' else is optional
' Do elsething
End If
“循环”呢,就是重复做某件事情,这大约是最能解放你双手的以中语句了。比如我要求1~100的和,那么我可以X=X+1 X=X+2 …… X=X+100,呃,是不是快累死了?没关系,循环解救你:
Dim Sum as Integer
Sum = 0
For i = 1 to 100 Step 1
Sum = Sum + I
Next
Debug.Print Sum
上面的代码应该挺直白,说白了就是设置一个变量Sum,设初值为0,然后从(For)1加到(to)100,然后Debug.Print Sum把最后结果打印出来。如果实在不懂也不必太纠结,具体的语法,你查查语法手册就了解了,用着用着自然也就熟悉了。
接着,该学点儿什么?
好了,基本思想就是这么地了,没什么神奇的。那接着怎么办?接下去,就要了解怎么用VBA操作Excel了,这一部分是VBA(Visual Basic for Application)中for Application的部分。于是Excel的VBA对象模型就登场了。其实也就是Application代表Excel程序,Workbooks代表所有打开的Excel文件的,Sheets代表Excel文件里面的表单,Range代表一个单元格区域什么的。比如
Range("A1").Value = 1
就是将当前表单的A1单元格的值设置为1。打开VBA的录制宏,试一试你就了解了,很简单的。
多学多练是学习任何一种东西的不二法门。只有通过不断的尝试你的编程技能才会得到真正的提高,一开始的时候可能会处处碰壁,没有关系,这很正常,我们拥有人类历史上最好的学习条件,勤查询勤思考,任何问题都能解决的。
卖女孩的火柴棍
二,后面有其他大佬建议,原因在于之前囫囵吞枣,应该得回归基础,找几本书看看。。。
三,目前执行中,但书本看过的内容很快就忘,没啥感觉,对python及其第三库规则or参数还是不甚了解。。。
四,本人非系统开发方向,非程序员,但需要python做统计分析、数据挖掘、规则策略和算法建模,so应该咋办?求指导
校验提示文案
卖女孩的火柴棍
一、数据导入
二、数据预处理(清洗规整、增删改查、数据类型转化)
三、探索分析(可视自动化)
四、特征衍生(组合变量批量自动化生成、特征筛选指标评估自动化)
五、分箱筛选(变量分箱最优自动化)
六、相关性构建(多类算法聚合:逻辑、回归、分类&机器学习、深度学习、强化学习
七、检验评测(第六项计算各自的混淆矩阵指标,自动化计算结果)
八、分数转换
九、超参调优
so针对第二至七项,就python及其第三方库(自动化)实操详解的电子书及其代码而言,特跪求大佬推荐。。。非AI或者chatgpt+XX系列,书籍需求具体如下:
1、小白速成上手、简单易懂
because:文科转型
2、行业内公认靠谱,电子书中文版(暂不考虑:单个某库的说明书)
because:内容忒多繁杂,且无常用算法库的聚合呈现
3、需要2023年出版
because:即使按书实操,旧版书均因为其所涉之第三方库的灭失、相同操作而新旧版本不适配、新旧版本变更操作等原因而导致无法实现同等功能)
校验提示文案
卖女孩的火柴棍
二,后面有其他大佬建议,原因在于之前囫囵吞枣,应该得回归基础,找几本书看看。。。
三,目前执行中,但书本看过的内容很快就忘,没啥感觉,对python及其第三库规则or参数还是不甚了解。。。
四,本人非系统开发方向,非程序员,但需要python做统计分析、数据挖掘、规则策略和算法建模,so应该咋办?求指导
校验提示文案
卖女孩的火柴棍
一、数据导入
二、数据预处理(清洗规整、增删改查、数据类型转化)
三、探索分析(可视自动化)
四、特征衍生(组合变量批量自动化生成、特征筛选指标评估自动化)
五、分箱筛选(变量分箱最优自动化)
六、相关性构建(多类算法聚合:逻辑、回归、分类&机器学习、深度学习、强化学习
七、检验评测(第六项计算各自的混淆矩阵指标,自动化计算结果)
八、分数转换
九、超参调优
so针对第二至七项,就python及其第三方库(自动化)实操详解的电子书及其代码而言,特跪求大佬推荐。。。非AI或者chatgpt+XX系列,书籍需求具体如下:
1、小白速成上手、简单易懂
because:文科转型
2、行业内公认靠谱,电子书中文版(暂不考虑:单个某库的说明书)
because:内容忒多繁杂,且无常用算法库的聚合呈现
3、需要2023年出版
because:即使按书实操,旧版书均因为其所涉之第三方库的灭失、相同操作而新旧版本不适配、新旧版本变更操作等原因而导致无法实现同等功能)
校验提示文案