1.宏(很棒的功能)
宏用的好,能省很多很多很多很多很多很多的事情,提高自己的效率,我们还举那么最好理解的例子,如果公司有几百,几千个人需要做工资条,难道你不停的粘贴复制表头和数据么??宏的应用,能过非常快的解决问题,我找到了一个博主写的帖子,写的还挺详细,分享学习
使用录制宏制作工资条 - 沉默的伯爵 - 博客园www.cnblogs.com2.VBA
一、 什么是VBA:VBA是一种编程语言,它依托于Office软件,不能独立的运行,通过VBA可以实现各种Office软件操作的自动化。通俗易懂的来说就是在Excel中想实现什么功能,就可以用VBA语言编写一段程序去完成。
二、 VBA的代码的开始和结束
Sub 代码名称() 代码内容 End Sub
三、 定义变量
Dim num As Integer、Dim num As Integer,str As String、Dim num1, num2 As Integer、Dim num%
四、 单元格的基本操作
2. 获取单元格的值
- Sheets(表名/表的编号).range(“单元格名称”)
- Sheets(表名/表的编号).[单元格名称]
- Sheets(表名/表的编号).Cells(行号,列号)
3. 为单元格赋值
- Sheets(表名/表的编号).range(“单元格名称”).value = 值
- Sheets(表名/表的编号).[单元格名称] .value = 值
- Sheets(表名/表的编号).Cells(行号,列号) .value = 值
五.案例题
- 打印100-999所有的水仙花数,所谓水仙花数就是指三位数,如果每一位上面的数值的立方的和等于这个数本身,那么这个数就是水仙花数
sub sxh
dim g,s,b,num,sum
for num=100 to 999 step 1
g=num mod 10
s=VBA.INT(num/10) mod 10
b=VBA.INT(num/100) mod 10
sum=g*g*g+s*s*s+b*b*b
if sum=num then
msgbox(num)
end if
next
end sub
- 判断1900-2000年的是否为闰年,并且给单元格赋值
sub runnian
dim i,j
j=1
for i=1900 to 2000
if i mod 4=0 and i mod 100 <>0 or i mod 400=0 then
sheets(1).cells(j,1).value=i
j=j+1
end if
next
end sub
- 打印九九乘法表
sub jjcfb
for i=1 to 9
for j=1 to 9
if j<=i then
cells(i,j)=j & "*" & i & "=" & j*i
end if
next
next
end sub
- 打印1-1000内的所有完数,完数就是除了它本身的所有约数的和=这个数,那么就是完数
sub wanshu
dim i,j,sum
for i=2 to 1000
sum=0
for j=1 to i-1
if i mod j=0 then
sum=sum+j
end if
next
if sum=i then
msgbox(i)
end if
next
end sub
- 求两个数的最小公倍数、最大公约数( 9 和 24)
- 思路:先找这两个数的谁是最大值和谁是最小值,找到大小关系后,如果大的那个值直接能够整除小的那个值,那么,这个大的值就是最小公倍数,如果除不尽,那么让这个大的值递增,每次都加1,一直找到那个能整除这两个数的值,那么这个数就是最小公倍数,最大公约数和这个类似,不同的就是找最小值,对小的值递减。
dim num1,num2,max,min
//判断两个值的大小关系
if num1>num2 then
max=num1
else
max=num2
end if
if num1<num2 then
min=num1
else
min=num2
end if
//求最小公倍数
do while true //当不知道到底循环多少次时,这时候用do while会比较方便
if max mod num1=0 and max mod num2=0 then
msgbox(max)
exit do //得到结果,退出循环
else
max=max+1
end if
loop
//求最大公约数
do while true
if num1 mod min=0 and num2 mod min=0 then
msgbox(min)
exit do //退出循环
else
min=min-1
end if
loop
- 结果:最小公倍数是72,最大公约数是3