工作中我们经常遇到重复性强的工作方式,依靠excel处理数据固然便捷,但是重复性操作某一件事的时候难免会枯燥乏味,有什么办法可以形成固定的模式,以后遇到此类工作便可以瞬间解决的方法吗?
答案是肯定的,我们可以制作自己的模板,或函数,或代码。
Waht?
代码?
你不是在开玩笑吧,我的英语水平就没及格过,你给我说代码?
这肯定是很多不了解代码童鞋的想法,其实不然,excel中的代码并不是那么难,今天小编就九九乘法表给大家详细解说代码的奥秘,让你看过后不再茫然,也能写出自己的代码。
视频的操作是由代码完成的,是不是很快?相比于手工操作,快了N倍,完整的代码如下:
Sub 乘法表()
Dim a%, b%
Range("a1:i9").Clear
For a = 1 To 9
For b = 1 To 9
If a >= b Then
Cells(a, b) = b & "×" & a & "=" & a * b
Else
Exit For
End If
Next
Next
End Sub
不要头晕,耐心看下去,你会看明白的
代码都是一层一层的,我们剖开来说;
1、首先sub 乘法表()指的是代码的开始,命名为乘法表,也可以命名为其他,乘法表三个字就是名字,可以任意改变
end是代码结束,完成所有操作,结束过程
这是一个完整代码不可缺少的骨架
2、然后我们理清思路,先弄清楚乘法表的原理以及规律:
横向看:
是由 1、2、3……9×行数
竖向看:
是由 列数×1、2、3……9
而且每当行数>列数,后面的数据就不要了,就如下图一样
规律就是这样,大家都能明白,那么我们如何给代码发出命令呢?
3、具体解释
Dim a%, b%
VBA中,dim表示声明变量,是告诉后面的同学,这是一个可以变化的整数数字
For a = 1 To 9
next
for 表示循环的意思,next表示结束,和sub,end是一个意思;
a = 1 To 9
就是说我让a在1-9之间循环,第一次为1,第二次为2,第三次为3....第九次为9
简言之,就是行数从1到9
同理
For b = 1 To 9
就是列数从1到9
可以看到,有两个for循环,一个在前,一个在后,
表示的是:当行数=1的时候,列数要从1到9循环一遍,循环完之后行数开始为2, 列数再次循环一遍,直到行数为9的时候,循环完毕
Cells(a, b) = b & "×" & a & "=" & a * b
注释:cells(行,列)——单元格位置
&——连接符,例如 你&好,表示你好
文字表示就是:行数×列数=积
为什么要这样写呢?
因为如果这样写的话:b × a = a * b ,出现的结果就是积=积的效果,1=1,2=2,3=3这个样子,“”包裹起来,就是字符,不会参与数值的计算,就会保留1×1=1这样的格式
运行代码后就是下面这个样子:
问题又来了,不是说行数>列数的时候,后面的就不要了吗?这不是还在
不要着急,乘法表的大体样式已经出来了,我们在进行一个判断,把不需要的让他不要出现,就是这一个步骤:‘——文字注释
If a >= b Then‘如果行数>列数,那么
Cells(a, b) = b & "×" & a & "=" & a * b
’目标单元格的内容=行数×列数=积,
Cells(1, 1)——1行1列=A1单元格,
Cells(1, 2)——1行2列=A2单元格,
Cells(1, 3)——1行3列=A3单元格
Else ’否则
Exit For‘退出循环,即退出列数的循环,如果行数=2,那么到2×2=4之 后就不要了,开始循环行数=3的计算
End If ’结束判断
白话就是,如果行数大于等于列数了,继续执行,否则就退出当前循环
再次运行之后,效果如下:
已经成型了,这时候细心的同学会发现,还有一行代码没有说呢,Range("a1:i9").Clear表示的是什么意思?
range()——选择的区域
clear——清除目标区域所有内容
select——选择=selection
详细点的写法是:Range("a1:i9").select
selection.Clear
整体来说,它的职责是,在运行前,把a1:i9的单元格区域所有内容进行清空,然后执行代码
至此,代码解释完毕,有没有看明白呢?
在写一段代码之前我们须先弄清楚它的原理,然后按照步骤进行书写,最后进行优化
最后呢,为了让代码执行起来更为方便,我们可以插入一个文本框或者图片等,
右键-指定宏,我们选择他的名字,也就是乘法表,就把代码赋给了图片,我们点击图片的时候就会执行代码
教程采用wps表格完成,excel宏可以直接用,wps需要安装一个插件,代码在文中,有兴趣的同学可以复制过去尝试一下,大家互相交流
需要插件可以关注后私信回复:宏插件
即可免费获取
