基于新创建的标记为日期的工作表在VBA中发布连接公式

基于新创建的标记为日期的工作表在VBA中发布连接公式,vba,excel,Vba,Excel,我有一个脚本,它创建了一个包含数据的工作表副本,查询新数据,然后在本例中使用查找SUMIFS将旧工作表中的任何手动条目拉到新工作表上。在将公式放到页面下面最后一行的那一行上,我收到一条应用程序定义/对象定义的错误消息。我尝试使用.Cells等直接添加公式,但它必须使用公式本身的语言,因为我可以用这种方式删除直接公式,例如.RangeN2:N&LastRow==M2*H2 试一试 最后一行应大于1 使用Long而不是Integer 最后有一个打字错误 在图纸名称之前和之后添加' 根据注释连接(&A

我有一个脚本,它创建了一个包含数据的工作表副本,查询新数据,然后在本例中使用查找SUMIFS将旧工作表中的任何手动条目拉到新工作表上。在将公式放到页面下面最后一行的那一行上,我收到一条应用程序定义/对象定义的错误消息。我尝试使用.Cells等直接添加公式,但它必须使用公式本身的语言,因为我可以用这种方式删除直接公式,例如.RangeN2:N&LastRow==M2*H2

试一试

最后一行应大于1 使用Long而不是Integer 最后有一个打字错误 在图纸名称之前和之后添加' 根据注释连接(&A) 使用工作表集合 我想你可以直接发到目的地工作表copysheet.RangeA1——但我可能错了。 代码:


你能展示一下生产出来的配方吗?可能工作表名称中缺少了?我在变量中添加了一个watch,它看起来是这样的:=SUMIFS'05-17-18'$M:$M,'05-17-18'$A:$A,QData$A:$A,'05-17-18'$C:$C,QData$C:$C,'05-17-18'$J:$J,QData$J:$J,'05-17-18'$E:$E,QData$E:$E。如果我在上面发布的公式中添加单引号,它仍然会提供相同的错误。使用&而不是+。vba正在尝试将日期转换为数字并将其添加到字符串中。我尝试了使用单引号和不使用单引号的转换,但仍然收到相同的错误消息。带有单引号的示例:公式==SUMIFS'&CopySheet&'!M:M,“&复印纸&”!A:A,A:A,“&复印件&”!C:C,C:C,“&复印件&”!J:J,J:J,“&复印件&”,!E:E,E:EWell,这个逗号很不幸,但我仍然需要其他人的帮助。谢谢你们两位!
Dim CopySheet As String
Dim QSheet As String
Dim FormulaS As String
Dim LastRow As Integer
Dim CoreWB As Workbook
Set CoreWB = ActiveWorkbook
QSheet = "QData"
CopySheet = Format(Date, "mm-dd-yy")
With CoreWB
    .Sheets.Add(After:=.Sheets("HistSum")).Name = CopySheet
    .Sheets(QSheet).Cells.Copy _
    Destination:=Sheets(CopySheet).Cells
End With
FormulaS = "=SUMIFS(" + CopySheet + "!M:M," + CopySheet + "!A:A, A:A," + CopySheet + "!C:C, C:C," + CopySheet + "!J:J, J:J," + CopySheet + ",!E:E, E:E)"
With Sheets(QSheet)
     LastRow = .Range("A" & .Rows.Count).End(xlUp).Row
     .Range("M2:M" & LastRow).Formula = FormulaS
Option Explicit
Sub TEST()

    Dim CopySheet As String
    Dim QSheet As String
    Dim FormulaS As String
    Dim LastRow As Long
    Dim CoreWB As Workbook
    Set CoreWB = ActiveWorkbook
    QSheet = "QData"
    CopySheet = Format$(Date, "mm-dd-yy")

    With CoreWB
        .Sheets.Add(After:=.Worksheets("HistSum")).Name = CopySheet
        .Sheets(QSheet).Cells.Copy _
        Destination:=Worksheets(CopySheet).Cells
    End With

    FormulaS = "=SUMIFS(" & "'" & CopySheet & "'!M:M,'" & CopySheet & "'!A:A, A:A,'" & CopySheet & "'!C:C, C:C,'" & CopySheet & "'!J:J, J:J,'" & CopySheet & "'!E:E, E:E)"
    With Worksheets(QSheet)
        LastRow = .Range("A" & .Rows.Count).End(xlUp).Row
        ' LastRow > 1
        .Range("M2:M" & LastRow).Formula = FormulaS
    End With

End Sub