gpt4 book ai didi

performance - Excel VBA - 常量字符串范围或定义范围名称之间的任何性能优势?

转载 作者:行者123 更新时间:2023-12-04 02:38:40 28 4
gpt4 key购买 nike

节日,

我有一个问题要帮助我更多地了解 Excel VBA 如何有效地管理已在一个地方声明的已定义范围,以便很好地执行数据。只是想在更多地研究这个项目之前确定哪两个选项(我目前知道)是更好还是不是首选的最佳实践。

我要解决的问题是制作一个小表格,其中包含一组虚构供应商的许多故障,因此表格看起来像这样(抱歉它是原始形式)

"Company Name" "No. of Failures"
"Be Cool Machine" 7
"Coolant Quarters" 5
"Little Water Coolants 3
"Air Movers Systems" 7
"Generals Coolant" 5
"Admire Coolants" 4

我的第一个选项(常量字符串)是这个模块/公式如下。

Option Explicit
Public Const CountofFailures As String = "J7:J12"
Sub btnRandom()
' Declaration of variables
Dim c As Range

' Provide a random number for failures across Suppliers
For Each c In ActiveSheet.Range(CountofFailures)
c.Value = Random1to10
Next c
End Sub

Function Random1to10() As Integer
'Ensure we have a different value each time we run this macro
Randomize
' Provide a random number from 1 to 10 (Maximum number of Failures)
Random1to10 = Int(Rnd() * 10 + 1)
End Function

第二个选项(定义名称)是这个模块/公式如下。

Option Explicit
Sub btnRandom()
' Declaration of variables
Dim c As Range
Dim iLoop As Long

' Provide a random number for Suppliers with Defined Range
For Each c In ActiveWorkbook.Names("CountofFailures").RefersToRange
c.Value = Random1to10
Next c
End Sub

Function Random1to10() As Integer
'Ensure we have a different value each time we run this macro
Randomize
' Provide a random number from 1 to 10 (Maximum number of Failures)
Random1to10 = Int(Rnd() * 10 + 1)
End Function

有什么建议 - 如果有帮助,我会稍后进行宏计时器测试?

如果我获取单元格中列出的范围作为值,是否还有第三种选择?我还没有看到实际执行此操作的代码?

最佳答案

我不知道性能差异 - 我怀疑 const 更快。我的一般建议是“在遇到性能问题之前不要担心性能”。否则,您最终会猜测将优化时间花在什么方面,这可能是不正确的。

对于命名范围,好处是当您插入行和列时它们会移动。如果您在 I 列插入新列,则需要编辑您的第一个示例,并且您的第二个示例将继续工作。

关于performance - Excel VBA - 常量字符串范围或定义范围名称之间的任何性能优势?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14008374/

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