1 工作表函数 对 EXCEL对象的引用语法
1.1 同一个sheet里
在同一个sheet里
cell range row column 层面,一般用冒号:如SUM(A:A)
引用 平行的多个对象,一般用逗号,如=SUM(A1,B1,G1)
1.2 跨同1个workbooks的sheets
跨sheet,用 sheet名+感叹号
这里的sheet名,就是sheet的直接看到的显示名。(= VBA的sheet名,而不是codename!!!)
语法如=SUM(Sheet2!A1:A17)
1.3 跨多个workbooks
啥时候是有带绝对路径的?
跨多个 workbooks
第1部分:文件的绝对路径,用单引号 " " 括起来 ,一直括到完整的路径,到workbooks.worksheet 全括起来
比如 "E:\最近文件\文件1\[Resource.xlsx]ResInfo"
第2部分:[workbook的显示名]
第3部分:sheet名字+!
=SUM([测试200.xlsx]Sheet1!$A$1:$A$5)
"E:\最近文件\文件1\[Resource.xlsx]ResInfo"!$2:$2
2 VBA里对EXCEL对象标准写法
2.1 标准写法
标准写法:Application.workbooks().worksheets().range().value
当然这内部符号VBA的语法都算,比如 worksheets() 可以替换为 sheet1 或 sheets(1)等写法
2.2 最简单写法
最简写法:但不支持任何变量
写法就是 EXCEL写法,外面加 [ ]
千万不要混用,外面是[] 里面是纯excel写法
[b1]=[sum(a1:a10)]
Sub test1002()
[h1] = [sum(a1:a10)]
End Sub
2.3 混合型写法--错误
混合型
EXCEL的部分加引号 ""
2.4 部分拼接的写法是OK的
不支持混用,只支持部分拼接的生效
外面的部分用VBA语法
里面“”部分用excel语法
拼接的写法是OK的,下面这两种拼接都是等价的
sheet1.range("a1:a10")
range("sheet1!A1:A10")
Sub test1002()
Debug.Print [sum(a1:a10)]
Debug.Print WorksheetFunction.Sum(Range("sheet3!a1:a10"))
Debug.Print WorksheetFunction.Sum(Range("[cs100.xlsx]sheet3!a1:a10"))
End Sub
range("a1:a10") 等价 [a1:a10]
3 实测
实测
msgbox(Application)
application.worksheetfunction.counta(range("a:a"))
application.sum(range("a:a"))
application.sum([a;a])
错误写法
application.worksheetfunction.counta(a:a)
application.worksheetfunction.counta("a:a")
application.sum(a;a)
application.sum("a;a")