函数
文章目录
- VBA的函数
- excel函数对应的vba函数
- counta
- vlookup
- excel特有函数和vba特有函数
- vba 字符串函数
- instr
- split
- vba 常用函数
- 错误处理
- 控制输入的格式
- 自己写函数
- 带参数的sub
- 代码复用
没完成的任务:张三李四登录p=8
VBA的函数
熟悉的函数可以用,有哪些新的函数
excel函数对应的vba函数
counta
函数计算范围中不为空的单元格的个数。
=counta(a1:a10)
' 指定某个工作表的某个区域
=counta(重庆!A:A)-1
vba中使用普通方法,计算不为空的单元格:
Sub tongji()
Dim k, i As Integer
alrow = Sheet2.Range("a65525").End(xlUp).Row
For i = 1 To alrow
If Sheet2.Cells(i, 1) <> "" Then
k = k + 1
End If
Next
Sheet1.Range("d26") = k - 1
End Sub
vba中调用函数快速解决:
Sheet1.Range("d26") = WorksheetFunction.CountA(Sheet2.Range("a:a"))-1
例子:
Sub tongji()
Dim k, kboy, kgirl As Integer
For i = 2 To Sheets.Count
k = k + WorksheetFunction.CountA(Sheets(i).Range("a:a"))
kboy = kboy + WorksheetFunction.CountIf(Sheets(i).Range("f:f"), "男")
kgirl = kgirl + WorksheetFunction.CountIf(Sheets(i).Range("f:f"), "女")
Next
Sheet1.Range("d26") = k
Sheet1.Range("d27") = kboy
Sheet1.Range("d28") = kgirl
End Sub
vlookup
函数功能
vlookup(找什么,在哪一块找(块的第一列会和找什么一一比较),找到以后返回第几列,精确匹配吗(0表示精确)),
使用函数
=VLOOKUP(D9,重庆!A:H,5,0)
使用vba代码的案例:
!! 如果函数找不到,会返回#value,但是vba找不到,程序会奔溃!!!
Sub chaxun()
Dim k As Integer
On Error Resume Next
Sheet1.Range("d14,d16,d18,d20,d22").ClearContents
For i = 2 To Sheets.Count
Sheet1.Range("d14") = WorksheetFunction.VLookup(Sheet1.Range("d9"), Sheets(i).Range("a:H"), 5, 0)
Sheet1.Range("d16") = WorksheetFunction.VLookup(Sheet1.Range("d9"), Sheets(i).Range("a:H"), 6, 0)
Sheet1.Range("d18") = WorksheetFunction.VLookup(Sheet1.Range("d9"), Sheets(i).Range("a:H"), 3, 0)
Sheet1.Range("d20") = WorksheetFunction.VLookup(Sheet1.Range("d9"), Sheets(i).Range("a:H"), 8, 0)
If Sheet1.Range("d14") <> "" Then
Sheet1.Range("d22") = Sheets(i).Name
Exit For
End If
Next
End Sub
excel特有函数和vba特有函数
excel中的left等函数,在vba中不用,vba中有如下一些类型的函数,可以直接用
with vba
.math
.strings
.datetime
.filesystem
.finacial
.information
.interaction
end with
interaction : inputbox msgbox
vba 字符串函数
字符串切割,可以用excel-数据-分列 来切割。
excel自带函数有一些
instr
使用vba,从邮箱中(123456@qq)截取qq号:
可以用worksheetfunction.find,但是如果找不到,会崩溃.
使用instr,找到返回第几位,找不到返回0.
Dim i as String
vba.strings.instr(range("a2"),"@")
split
返回数组,通过索引获取,从0开始
' 12-1234-3452-2354
Range("a3") = split(range("a2"),"-")(0)
vba 常用函数
'vba函数可以简写
num = val(text) 转成数字
num = text *1
VBA.Information.IsNumeric() 是不是数字
简称IsNumeric()
vba.strings中的:
left mid right
错误处理
on error resume next
XXX
XXX
;只要某一行出错,就跳过这一行,这一次不执行
控制输入的格式
只能输入整数
I = inpubox("请输入数字,不是文字")
If VBA.Information.IsNumeric(I)=false or I<1 Then
Exit Sub
End If
VBA.Information.IsNumeric()简称IsNumeric() 'vba函数可以简写
自己写函数
excel自带函数不够用,可以写自己的函数
在模块中编辑函数
Function toDollar(x)
toDollar = x * 0.18
End Function
' 称呼转换函数
Function mynominal(str As String)
If str = "男" Then
mynominal = "先生"
Else
mynominal = "女士"
End If
End Function
可以在excel直接调用,也可以在vba里面调用。
这样,vba特有函数(如split)就可以在excel里面使用了。例如写一个函数,截取字符串中第一和第二个“-”之间的部分
function jqzf(str1,str2,i)
jqzf = split(str1,str2)(i-1)
end function
带参数的sub
可以根据参数,执行一些动作。比函数功能多
比如参数是表名(字符串),动作是创建这个名字的表单
sub create( s as string)
XX
end sub
sub createit()
call create("表1")
call create(range("a1"))
end sub
代码复用
针对某个excel写的通用代码,想要在其他excel中仍能使用。
1、 将写好的宏另存为xla格式,默认路径
2、 开发工具-加载项-勾选那个宏
3、 文件-选项-快速访问工具栏-常用命令-宏-选中代码库
更多推荐
VBA函数
发布评论