您好,这是一个扩展,上一个问题Here
目前我正在尝试使用复杂的excel公式并转换为application.worksheetfunction VBA进程,以便在代码执行期间进行评估。
现在最大的问题是我遇到了Mismatch错误,发布了我的所有定义。任何人都明白为什么这会引起不匹配错误?
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 & ")"