【问题标题】:Posting a concatenated formula in VBA based on a newly created worksheet labeled as a date根据标记为日期的新创建的工作表在 VBA 中发布串联公式
【发布时间】:2018-05-18 14:34:50
【问题描述】:

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

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

【问题讨论】:

  • 你能显示生成的公式吗?也许工作表名称中缺少'
  • 我在变量中添加了一个手表,它看起来像这样:=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 正在尝试将日期转换为数字并将其添加到字符串中。
  • 我尝试使用和不使用单引号,但仍然收到相同的错误消息。单引号示例: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)"

标签: vba excel


【解决方案1】:

试试

  1. LastRow 应该 > 1
  2. 使用 Long 而不是 Integer
  3. 最后有一个错字“,”
  4. 在工作表名称前后添加'
  5. 与 & 连接(根据 cmets)
  6. 使用工作表集合
  7. 我认为你可以发帖到 destination Worksheets(CopySheet).Range("A1") - 但我可能错了。

代码:

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

【讨论】:

  • 好吧,那个逗号很不幸,但无论如何我仍然需要其余的帮助。谢谢你们!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-19
  • 2022-01-26
  • 2016-10-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多