Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
关于不匹配错误VBA的适当定义_Vba_Excel - Fatal编程技术网

关于不匹配错误VBA的适当定义

关于不匹配错误VBA的适当定义,vba,excel,Vba,Excel,您好,这是一个扩展,关于前面的问题 目前,我正在尝试将一个复杂的excel公式转换为application.worksheetfunction VBA进程,以便在代码执行期间对其进行计算 现在最大的问题是我遇到了一个不匹配的错误,发布我所有的定义。任何人都清楚为什么这会引起不匹配错误吗 Dim mws As Worksheet Dim wf As WorksheetFunction Dim mwsN As Range Dim mwsC As Range D

您好,这是一个扩展,关于前面的问题

目前,我正在尝试将一个复杂的excel公式转换为application.worksheetfunction VBA进程,以便在代码执行期间对其进行计算

现在最大的问题是我遇到了一个不匹配的错误,发布我所有的定义。任何人都清楚为什么这会引起不匹配错误吗

    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)
编辑:

为简单起见,请参见复制的excel公式

=SUMIFS($N:$N,$B:$B,INDEX($B:$B,MAX(INDEX(($C:$C=$AM41)*ROW($C:$C),0))),$C:$C,$AM41)
EDIT2:这是针对同一问题的另一次尝试。通过这种方式,我将插入计算公式,然后将其粘贴为值,尽管它仍然会抛出不匹配错误

mws.Cells(LastMWSR + 1, CLastMWSC).Formula = "=SUMIFS(" & mws.Range("N:N").Address & "," & mws.Range("B:B").Address & ",INDEX(" & mws.Range("B:B").Address & ",MAX(INDEX((" & mws.Range("C:C").Address & "=" & mws.Cells(LastMWSR + 1, CLastMWSC - 1).Address & "*ROW(" & Range("C:C").Address & ",0)))," & mws.Range("C:C") & "," & mws.Cells(LastMWSR + 1, CLastMWSC - 1).Address & ")"

编写
Option Explicit
,尝试调试代码并声明所有内容。索引((mwsC=mwslat)的概念是什么?哪一行导致了错误?实际执行工作表函数的是这一行@Mistella@Vityata索引((mwsC=mwsLast)在特定列(C:C)中搜索特定的职位ID(将在mwsLast中标识),为什么不使用
Evaluate(“您的工作公式”)
。我还建议您在VBA阵列上使用VBA函数来实现您的目标。请参阅Chip Pearson的网站文章