哪个更快,可变或直接访问单元格值?

nik*_*iko 1 excel vba excel-vba

好吧,我有很多字符串操作,如

1st one
ActiveSheet.Cells(i, "B").Value = Replace(ActiveSheet.Cells(i, "B").Value, ",", " ")
ActiveSheet.Cells(i, "B").Value = Replace(ActiveSheet.Cells(i, "B").Value, "/", " ")
ActiveSheet.Cells(i, "B").Value = Replace(ActiveSheet.Cells(i, "B").Value, "&", " ")
ActiveSheet.Cells(i, "B").Value = Replace(ActiveSheet.Cells(i, "B").Value, "(", " ")
2nd one
store=ActiveSheet.Cells(i, "B").Value
store= Replace(store, "/", " ")
store = Replace(store, "&", " ")
store = Replace(store, "(", " ")
Run Code Online (Sandbox Code Playgroud)

和一些修剪操作,有时找到字符串长度,有时比较.

我必须为单元格1到4000进行循环.问题是将单元格值存储在字符串中并且访问更好更快?或者在宏中写入activesheet单元格值本身更快?

store = activesheet.cells(i,"B").value and use store everywhere 
or write activesheet.cells(i,"B").value everywhere?
Run Code Online (Sandbox Code Playgroud)

哪个更好,哪个更优化我有点想,如果我们提到它必须去单元格并将其取回,但如果我们将它存储在变量中那么它可能会更快.我只需要知道哪个更好?

aev*_*nko 6

访问Excel很慢.存储您在变量中访问两次以上的内容总是会更快,并且将一系列单元格(一次调用Excel)转储到变量数组中会更好.

请记住,Excel和VBA不一样.这就像两个人在同一个房间但不同的房间.每次访问Excel时,VBA都必须敲开Excel的大门.

更新:以上是所有代码的一般建议.关于上面的特定代码和你正在做的事情,使用Excel的搜索和替换范围的功能实际上可能更快,如下所示:

Sub test()

Application.ScreenUpdating = False
With Range("B1:B4000")
    .Replace what:="(", replacement:=" ", LookAt:=xlPart, SearchOrder _
    :=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False

    .Replace what:="&", replacement:=" ", LookAt:=xlPart, SearchOrder _
    :=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False

    .Replace what:="/", replacement:=" ", LookAt:=xlPart, SearchOrder _
    :=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
End With
Application.ScreenUpdating = True
End Sub
Run Code Online (Sandbox Code Playgroud)