gpt4 book ai didi

Excel宏使用变量来定义整数失败的范围

转载 作者:行者123 更新时间:2023-12-04 23:02:19 26 4
gpt4 key购买 nike

我正在创建一个由

定义的整数 myrng1
Set myrng1 = Range("B3 :" & Cells(LastRow, 2))`

在代码中

LastRow = Cells(Rows.Count, "B").End(xlUp).Row
Set myrng1 = Range("B3 :" & Cells(LastRow, 2))
Set myrng2 = Range("D3 :" & Cells(LastRow, 4))

ActiveCell.FormulaR1C1 = "=SUMIF(myrng1,RC[-1],myrng2)"
Range("B15").Select
Selection.AutoFill Destination:=Range("B15:B30"), Type:=xlFillDefault
Range("B15:B30").Select

但是无论我做什么,我都会遇到对象“_Global”的方法“Range”失败错误

最佳答案

最简单的方法是

Set myrng1 = Range("B3:B" & LastRow)

否则,如果您想遵循伯纳德提到的方法,请使用 .Address 属性。

将代码更改为

Set myrng1 = Range("B3:" & _
Cells(LastRow, 2).Address( _
rowabsolute:=False, _
columnabsolute:=False) _
)

或者这个做同样的事情。

Set myrng1 = Range("B3:" & _
Replace(Cells(LastRow, 2).Address, "$", "") _
)

另外,我希望您将 LastRow 声明为 Long 而不是 Integer,因为您可能会在 xl2007+ 中遇到溢出错误

最后一件事。您的 Cells 对象未完全限定,这可能会给您带来错误。完全符合他们的资格。例如(注意点)

Set myrng1 = ThisWorkbook.Sheets("Sheet1").Range("B3:B" & LastRow)

With ThisWorkbook.Sheets("Sheet1")
Set myrng1 = .Range("B3:" & _
.Cells(LastRow, 2).Address( _
rowabsolute:=False, _
columnabsolute:=False) _
)
End With

编辑感谢 pnuts 指出这一点

一旦解决了上述问题,你就会面临更多的问题。例如“=SUMIF(myrng1,RC[-1],myrng2)”" 之间的任何内容都将被视为字符串。您可能想使用它

"=SUMIF(" & myrng1.Address & ",RC[-1]," & myrng2.Address & ")"

同样,您可能需要使用不带“$”的 .Address,如上所述。

还有一件事。如果第 30 行是最后一行,那么您可以一次性在所有单元格中填写公式,而不是使用自动填充请参阅此示例

With ThisWorkbook.Sheets("Sheet1")
.Range("B15:B30").Formula = "=SUMIF(" & _
myrng1.Address & _
",A15," & _
myrng2.Address & ")"
End With

或者

With ThisWorkbook.Sheets("Sheet1")
.Range("B15:B" & lastrow).Formula = "=SUMIF(" & _
myrng1.Address & _
",A15," & _
myrng2.Address & ")"
End With

此外,我想提请您注意这个INTERESTING READ :p

关于Excel宏使用变量来定义整数失败的范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21421819/

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