首页 > 解决方案 > 带有 application.worksheetfunction 的数组上的不匹配错误

问题描述

目前我正在尝试采用复杂的 excel 公式并将其转换为application.worksheetfunctionVBA 进程,以便在代码执行期间对其进行评估。

我之前已经问过这个问题,但仍然很难确定我需要在哪里/需要修改什么才能使其正确执行

基本上,我正在采用下面的 excel 公式并努力将其转换为具有动态单元格范围的 VBA 代码(也是$AM41动态的,并且会根据代码定义进行更改)

=SUMIFS($N:$N,$B:$B,INDEX($B:$B,MAX(INDEX(($C:$C=$AM41)*ROW($C:$C),0))),$C:$C,$AM41)

到目前为止,我的代码就是这样

    Dim mws As Worksheet
    Dim wf As WorksheetFunction
    Dim mwsN As Range
    Dim mwsC As Range
    Dim mwsB As Range
    Dim mwsLast As Range

    Set wf = Application.WorksheetFunction
    Set mws = Sheets("Marks")
    Set mwsN = mws.Range("N:N")
    Set mwsC = mws.Range("C:C")
    Set mwsB = mws.Range("B:B")
    LastMWSR = mws.Cells(mws.Rows.Count, "B").End(xlUp).Row
    ClastMWSC = mws.Cells(1, mws.Columns.Count).End(xlToLeft).Column
    Set mwsLast = mws.Cells(LastMWSR + 1, ClastMWSC - 1)


    'error, is thrown just below this line

    mws.Cells(LastMWSR + 1, ClastMWSC).Value = _
    wf.SumIfs(mwsN, mwsB, wf.Index(mwsB, wf.Max(wf.Index((mwsC = mwsLast) * wf.Row(mwsC), 0))), mwsC, mwsLast)

我相信这里会抛出不匹配错误

wf.Max(wf.Index((mwsC = mwsLast)

我不知道如何将该数组传达为 VBA 术语。

谁能帮助说明如何使这种动态化并清除不匹配错误?

标签: vbaexcel

解决方案


推荐阅读