在VBA中数组公盯察式的大括号,也就是Ctrl+Shift+Enter组凯轮茄合键,是通过.FormulaArray实现的
注意区别一般的公式.Formula
一个多月了,解决问题就采纳,别桐洞磨磨唧唧了
数组大括号有两种:❶通过Ctrl+Shift+Enter组合键输入,❷手工输入的数组大括号{}。例子:判断员工上下班用的公式LOOKUP很典型,它同时要求按组合键公式内也有手工输入的大括号,并且有函数在里面。=LOOKUP(B32,({0,11.5,12.3,17}-1%%%)/24,{"上午","中午","下午","晚上"})
那么它们在vba中怎样写语句呢?方式很灵活,花样也很多。
❶通过Ctrl+Shift+Enter组合键输入的最简单vba处理:①单元格申明用FormulaArray,不是普通公式的Formula,公式部分则用双引号引起来,②函数公式则用WorksheetFunction,有时还需要变换成其他函数公式 ,见第二个例子。
ActiveCell.FormulaArray = "=VLOOKUP(R1C21&R1C22,IF({1,0},C4&C11,C15),2,0)"
❷手工输入的数组大括号{},在vba不用引号方式就行不通了。变通方式有两种:①改用if,Select Case等传统方式处理,②改成array表达搜卖式。数组大括号{}其实就是array()的码腔简写。
判断员工上下班用的公式在vba中就可以写成这个样子
Cells(10, 9) =WorksheetFunction.LOOKUP(B32,(array(0,11.5,12.3,17)-1%%%)/24,array("上午"世模逗,"中午","下午","晚上"))
有人嘲笑在vba中用公式的方式,既然微软件提供了这种方式说明它很有存在的必要,其中一个重要原因是有很多公式运行效率远大于使用者编程,另一个是用公式表达式更简洁,象上面这个判断员工上下班的考勤公式用if很复杂,遇到集团公司,有许多种上班日程则直接让公式崩溃。同样在vba中也会使程序很复杂无论运行效率还是维护都很差。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)