关于不匹配错误VBA的适当定义
您好,这是一个扩展,关于前面的问题 目前,我正在尝试将一个复杂的excel公式转换为application.worksheetfunction 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
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的网站文章