2024-01-01 13:39来源:m.sf1369.com作者:宇宇
1. VBA 调用前台函数使用worksheetfunction,比如worksheetfunction.vlookup(...)
2. 不同工作簿的话,必须使用定义的application来调用,也就是说,不同的工作簿必须使用不同的application;比如:工作簿2的application:workbook.Application.WorksheetFunction.VLookup(.....)
3. 注意参数对应workbook,比如工作簿2的range(A:A) 使用函数时候,也要使用该工作簿的application;
1. 例子:
'=======打开远程表格(计划1)开始===============
Set Excelapp = CreateObject(Excel.Application) '创建EXCEL对象
Set ExcelBook = Excelapp.Workbooks.Open(y:\计划1.xls, ReadOnly:=True)
Set ExcelSheet = ExcelBook.Worksheets(计划1)
'=======打开远程表格(计划1)结束===============
set rng = ExcelSheet.range(A:A) '工作簿“计划1”中工作表“计划1”的 A 列范围
对该范围使用函数
Excelapp..WorksheetFunction.sum(rng) '对上面范围求和(注意前面的Excelapp)
2.
3.
公式最快:
在B2输入
=IF(ISERROR(VLOOKUP(A2,Sheet1!A$2:B$999,2,)),0,VLOOKUP(A2,Sheet1!A$2:B$999,2,))+IF(ISERROR(VLOOKUP(A2,Sheet2!A$2:B$999,2,)),0,VLOOKUP(A2,Sheet2!A$2:B$999,2,))
回车后再选中B2,鼠标移到其右下角,双击那个“+”,完成。
非要用VBA,代码如下:
Sub test()
Sheets(Sheet3).Select
Range(B2) = =IF(ISERROR(VLOOKUP(A2,Sheet1!A$2:B$999,2,)),0,VLOOKUP(A2,Sheet1!A$2:B$999,2,))+IF(ISERROR(VLOOKUP(A2,Sheet2!A$2:B$999,2,)),0,VLOOKUP(A2,Sheet2!A$2:B$999,2,))
Range(B2).Copy Range(B3:B & Range(A9999).End(xlUp).Row)
End Sub
你可以在EXCEL内将数据排序后使用IF涵数直接查找,
Sub pd()
'定义一个函数为pd,用来写一个判断程序
Dim x, y, z, i As Integer
'定义变量x, c, y, z, i为整形
Dim xx, yy, zz As String
'定义变量xx, yy, zz为文本字符型
For z = 2 To 3
'MsgBox(定义变量z为行循环次数,这里只需要循环判断2行数据,即第二行至第三行)
x = Len(Sheet1.Range(B & z))
'MsgBox (定义变量x为计算B2单元格的长度)
y = Len(Sheet1.Range(C & z))
'MsgBox (定义变量y为计算C2单元格的长度)
zz =
'MsgBox (清空变量zz的值,为下一行得数做准备)
For i = 1 To x
'MsgBox (定义变量i为循环,从1开始,次数为每行B列单元格的字段长度)
For i = 1 To x
If x <> y Then
Exit For
End If
'判断如果量个数据长度不同,则直接跳出循环,不进行计算
xx = Mid(Sheet1.Range(b & z), i, 1)
'定义变量xx为B列每行从左至右每次取得一位数字字符
yy = Mid(Sheet1.Range(c & z), i, 1)
'定义变量yy为C列每行从左至右每次取得一位数字字符
If (xx = 2 Or xx = 3) And (yy = 2 Or yy = 3) Then
'进行判断
zz = zz & 1
'判断为真的情况下赋值加上“1”这个字符
Else
zz = zz & 0
'判断为假的情况下赋值加上“0”这个字符
End If
Next i
'i循环结束继续跳转到z循环
Sheet1.Range(d & z) = ' & zz
'赋值每行比较后得到的结果值至每行D列
Next z
'z循环结束
End Sub
'判断程序的结束