Excel 优化

标签 optimization excel vba

情况如下:在我的 Excel 工作表中,有一列包含 1-name 形式的条目。考虑到数字也可以是两位数,我想删除这些数字。这本身不是问题,我让它工作了,只是性能太糟糕了。现在我的程序每个单元格输入大约需要半秒。

我的问题:如何提高性能? 这是代码:

Sub remove_numbers()
    Dim YDim As Long
    Dim i As Integer, l As Integer
    Dim val As String
    Dim s As String
    YDim = Cells(Rows.Count, 5).End(xlUp).Row
    For i = 8 To YDim
        val = Cells(i, 5)
        l = Len(val)
        s = Mid(val, 2, 1)
        If s = "-" Then
            val = Right(val, l - 2)
        Else
            val = Right(val, l - 3)
        End If
        Cells(i, 5).Value = val
    Next i
End Sub

最佳答案

您可以使用 Split() 而不是使用 3 个不同的函数:Len()、Mid()、Right()在这种情况下,函数的效率会更高。

尝试下面的代码

Sub remove_numbers()
    Application.ScreenUpdating = False
    Dim i As Long
    For i = 8 To Cells(Rows.Count, 5).End(xlUp).Row
        Cells(i, 5) = Split(Cells(i, 5), "-")(1)
    Next i
    Application.ScreenUpdating = True
End Sub

关于Excel 优化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18843331/

相关文章:

python - Python 中成对相关的优化计算

c - sqlite3 C API无法打开/关闭超过1024个数据库

excel - 有没有办法在vba中编辑公式

r - 导入 R 函数时,Rcpp 中的实现速度比 R 慢

excel - 在 Excel 用户窗体中显示 "live"图表数据

excel - 如何在Excel中同时使用COUNTIF和COUNTA?

excel - 使用单元格引用导出 XLS 文件

excel - 如何在 VBA 中声明 PtrSafe Sub? Windows 7、Excel 2016、64 位

vba - Excel字符串包含字符串而不是字符串等于字符串

optimization - GCC -mthumb 反对 -marm