【发布时间】:2018-06-08 08:43:26
【问题描述】:
目前我有一个相对复杂的工作簿公式,我想将其转换为 vba 公式。
目前,我编写了以下内容,但我希望它在代码执行期间基本评估函数并将值插入所需的单元格。
我想这是worksheetfunction 的某种组合,但我不确定如何翻译
代码(不起作用)
MWS.Cells(LastMWSR + 1, ClastMWSC).Value = WorksheetFunction.SUMIFS(mws.range(N:N),mws.Range(B:B),worksheetfunction.INDEX(mws.range(B:B),worksheetfunction.MAX(worksheetfunction.INDEX((mws.range(C:C)=MWS.Cells(LastMWSR + 1, ClastMWSC - 1))*worksheetfunction.ROW(mws.range(C:C)),0))),mws.range(C:C),MWS.Cells(LastMWSR + 1, ClastMWSC - 1))
Excel公式
=SUMIFS($N:$N,$B:$B,INDEX($B:$B,MAX(INDEX(($C:$C=$AM41)*ROW($C:$C),0))),$C:$C,$AM41)
MWS 是一个工作表
LastMWSR 是工作表中的最后一行
CLASTMWSC 是工作表中的最后一列
欣赏你的想法
编辑:再次尝试公式
【问题讨论】:
-
你可以开始here
-
不是我问的,而是问如何通过 worksheet.function 来完成它,因此它在代码中进行了评估,只是一个粘贴到单元格的公式。我正在寻找是否需要在公式之前指定地址或范围属性,或者是否需要使用 R1C1 表示法,以及是否需要澄清我的动态范围。除了那篇文章介绍的内容之外,还有很多其他内容。
-
亲爱的朋友,要使用
Application.worksheetfunction,您需要在VBA中传递范围和参数。例如,N:N无论如何都应该类似于range("n:n"),很多时候通过使用 VBA 级别代码,您可以选择以不同且更简单的方式执行您正在寻找的事情。您有很多错字,我会编辑您的帖子,但请记住,对于所有功能,您必须再次使用工作表功能!MWS.Cells(LastMWSR + 1, ClastMWSC).Value = worksheetfunction.SumIfs(nws.range("n:n"),nws.range("b:b"),worksheetfunction.Index(range("b:b"),application.Max(....) -
另一种选择是获取您要查找的内容,将公式放入单元格中,然后跟进
MWS.Cells(LastMWSR + 1, ClastMWSC).Value = MWS.Cells(LastMWSR + 1, ClastMWSC).Value。这将用值替换公式。
标签: vba excel excel-formula