需要对象(错误 424),引用属性和方法经常需要一个明确的对象限定符。
你把a = applicaion 少写了一个字母t了。
正确语句为:
Function a()a = ApplicationWorksheetFunctionIndex(Worksheets("sheet2")Range("a1:c4"), ApplicationWorksheetFunctionMatch(Worksheets("sheet1")Range("F19"), Worksheets("sheet2")Range("b1:b4"), 0), 3)
End Function
i 和 j 没放到循环语句中。
下面给你演示个不用循环就可以计算出来的简单例子,希望你能从中举一反三。
设活动工作表中有如下格式的数据,其中 D6:D7 为存放代码计算出来的结果区域
参考 VBA 代码
Public Sub Sum12Num()With ActiveSheetCells(6, 4)
FormulaArray = "=SUM(OFFSET(INDEX(2:2,,MATCH(TRUE,2:2<>0,0)),,,,12))"
AutoFill Resize(2)
Value2 = Value2
End With
End Sub
关键技术分析
公式数组
=SUM(OFFSET(INDEX(2:2,,MATCH(TRUE,2:2<>0,0)),,,,12))Step1
用 MATCH 函数查找第二行首个不为 0 的单元格所在的列索引号。
返回 >> 5
Step2
用 INDEX 继续在第二行中查找首个不为 0 的单元格,其中第三个参数使用了 Step1 中返回的列索引号。
返回 >> 对 E5 单元格的引用
Step3 >> 用 OFFSET 函数对 Step2 返回的单元格引用(E5)往右调整 12 个单元格。
返回 >> E2:P2
Step4 >> 用 SUM 函数对 Step3 返回的 12 个单元格区域求和
程序运行动画效果
有多种办法,常用以下三种方法:1、用Fund方法
R = Range("AX5:AX1000")Find(Range("BA2"), , , 1)Row
2、使用工作表函数容器中的Match函数
R = ApplicationWorksheetFunctionMatch(Range("BA2"), Range("AX5:AX1000"), 0) + 4
3、用循环比较的方法(代码略)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)