【问题标题】:From Range to String within .Formula.Formula 中从范围到字符串
【发布时间】:2019-01-16 01:32:16
【问题描述】:

我可能会有点不稳,但我选择了单元格“E2”并一直到最后一个单元格。

我还找到了包含“小计”一词的单元格的位置并返回地址。我希望该单元格旁边的单元格包含一个公式,该公式仅当“F”列中的相应单元格在单元格中输入“是”字样时,才会将所有单元格从“E2”向下加到第一个空单元格.

它一直有效,直到实际公式,但我不确定我是否错过了语法错误或某种错误。


Sheets(TextBox1.Value).Select

Dim LastClass As Variant
Range("E2").Select
Selection.End(xlDown).Select
LastClass = Cells(Selection.Row, 
Selection.Column).Address(0, 0)

' Finds "subtotal"
Set Subtotal = Sheets(TextBox1.Value).Range("D:D")
Set Subtotal2 = Subtotal.Find("Subtotal")
SubAddress = Cells(Subtotal2.Row, Subtotal2.Column).Address(0, 0)
RR = Range(Subtotal2.Address).Row - 2
Dim RRs As String
RRs = CStr(RR)
SubAddress.Offset(1, 0).Formula = "=SUMIF(F2:F" & RRs & ",""Yes"",E2:" & LastClass & ")"

【问题讨论】:

  • 很多假设。例如,如果选择是几个单元格怎么办?那么你的代码就会失败。
  • 顶部的代码通过选择列末尾的单元格(即最后一个包含数据的单元格,这正是我想要的)来选择一个单元格。过了这点,就有问题了

标签: string vba excel excel-formula offset


【解决方案1】:

除了让它尝试将公式放在一行而不是一列(这没什么大不了的)之外,我还试图从单元格字符串而不是从该字符串表示的范围偏移。我所要做的就是将SubAddress 放入Range

Sheets(TextBox1.Value).Select

Dim LastClass As Variant
Range("E2").Select
Selection.End(xlDown).Select
LastClass = Cells(Selection.Row, Selection.Column).Address(0, 0)

' Finds "subtotal"
Set Subtotal = Sheets(TextBox1.Value).Range("D:D")
Set Subtotal2 = Subtotal.Find("Subtotal")
SubAddress = Cells(Subtotal2.Row, Subtotal2.Column).Address(0, 0)
RR = Range(Subtotal2.Address).Row - 2
Dim RRs As String
RRs = CStr(RR)
Range(SubAddress).Offset(0, 1).Formula = "=SUMIF(F2:F" & RRs & ",""Yes"",E2:" & LastClass & ")"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-12-20
    • 1970-01-01
    • 1970-01-01
    • 2021-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多