如何在VBA中自定义一个函数,用index和match,我想在sheet1的照相机里显示sheet2中对应的照片。 求指导。

如何在VBA中自定义一个函数,用index和match,我想在sheet1的照相机里显示sheet2中对应的照片。 求指导。,第1张

需要对象(错误 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、用循环比较的方法(代码略)


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/13322175.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-07-14
下一篇 2023-07-14

发表评论

登录后才能评论

评论列表(0条)

保存