gpt4 book ai didi

vba - 使用 worksheet.function 将工作表公式更改为 VBA 公式

转载 作者:行者123 更新时间:2023-12-04 22:34:04 24 4
gpt4 key购买 nike

目前我有一个相对复杂的工作簿公式,我想将其转换为 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 是工作表中的最后一列

欣赏你的想法

编辑:再次尝试公式

最佳答案

这里有三个问题

  • 无效的工作表引用 mws.Range(...
  • 缺少引号 Range(B:B)
  • 括号不好

  • 重构,并添加了一些简化变量
    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 = Worksheets("mws")
    Set mwsN = mws.Range("N:N")
    Set mwsC = mws.Range("C:C")
    Set mwsB = mws.Range("B:B")
    Set mwsLast = mws.Cells(LastMWSR + 1, ClastMWSC - 1)

    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)

    关于vba - 使用 worksheet.function 将工作表公式更改为 VBA 公式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50748794/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com