如何在Excel VBA中优化(或尽可能避免)循环

锯齿状的

早先在此论坛上讨论了Excel VBA中涉及选择(以及如何避免选择)和“繁重”循环的各种问题。我想对此进行一点扩展。假设我想将某个字符串更改为另一个字符串,然后对数字数据进行其他操作。考虑以下代码:

Option Explicit
Sub LoopExample()
    Dim rownumber, colnumber As Integer

    ' Step 1: start a loop from a desired position
    For rownumber = 30 To 3000
            For colnumber = 30 To 3000

                ' Step 2: check that the cell is not empty
                If IsEmpty(Cells(rownumber, colnumber).Value) = False Then

                    ' Step 3: change all "Cat" texts to "Dog"
                    If Cells(rownumber, colnumber).Value = "Cat" Then
                        Cells(rownumber, colnumber).Value = "Dog"

                    ' Step 4: if the cell value is numeric...
                    ElseIf IsNumeric(Cells(rownumber, colnumber).Value) Then

                        ' ...check another thing and execute something accordingly
                        If (Cells(rownumber, colnumber).Value) / 2 < 0.5 Then
                            Cells(rownumber, colnumber) = Round(Cells(rownumber, colnumber).Value, 4)
                        Else
                            Cells(rownumber, colnumber) = Round(Cells(rownumber, colnumber).Value, 1)
                        End If

                    End If

                End If
            Next colnumber
    Next rownumber
End Sub

现在,此代码可以“完美地”工作,但效率不高。我应该通过以下方式对其进行优化:1)首先找到所有包含数据的单元格; 2)仅在这些单元格上循环; 3)现在将数据进一步划分为数值和非数值数据; 4)执行什么操作我想要这些数字和非数字范围吗?还是应该将其中一些步骤组合成一个循环?

火腿骨

我认为您可以通过让Excel仅查看具有值的单元格来进行很多优化。为此,可以SpecialCells对常量和公式使用的组合-我认为两者的组合将捕获所有“填充”或非空白的单元格:

Sub LoopExample()

  Dim ws As Worksheet
  Set ws = ActiveSheet
  Dim r, s As Range

  Set r = Application.Union(ws.UsedRange.SpecialCells(xlCellTypeConstants), _
      ws.UsedRange.SpecialCells(xlCellTypeFormulas))

  For Each s In r

    If s.Row >= 30 And s.Row <= 3000 And s.Column >= 30 And s.Column <= 3000 Then
      If s.Value2 = "Cat" Then
        s.Value2 = "Dog"
      End If
    End If
  Next s

End Sub

我没有列出评估单元的所有逻辑,但是您明白了。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在Excel VBA中优化(或尽可能避免)循环

来自分类Dev

如何避免渲染元素尽可能简单

来自分类Dev

如何在 Excel 中优化 VBA 代码中的多个循环

来自分类Dev

如何使JPanel中的组件尽可能伸展?

来自分类Dev

如何使JPanel中的组件尽可能伸展?

来自分类Dev

我如何加载尽可能少的服务以优化系统的最高性能:在4级执行?

来自分类Dev

如何在y列中尽可能均匀地分配x项?

来自分类Dev

如何在asp.net 3.5中尽可能长时间地保留会话

来自分类Dev

如何在y列中尽可能均匀地分配x项?

来自分类Dev

如何在flexbox中具有自动宽度内容而不破坏布局?(占用尽可能多的空间,并尽可能少地占用空间)

来自分类Dev

如何在Excel中优化VBA函数

来自分类Dev

尽可能缩短Excel公式

来自分类Dev

如何在另一个表的特定列中定义的值中插入尽可能多的值

来自分类Dev

如何在保留尽可能多的历史记录的同时从git的历史记录中清除单词?

来自分类Dev

如何使小部件尽可能小(Android中的wrap_content)?

来自分类Dev

如何向指定的JFrame中添加尽可能多的JPanel?

来自分类Dev

如何使用 Handbrake 从大视频中尽可能快地制作三倍小的视频?

来自分类Dev

如何将容器中的文本与尽可能小的容器对齐?

来自分类Dev

是否应尽可能避免循环范围?

来自分类Dev

如何创建尽可能短的URL唯一ID?

来自分类Dev

如何使Python生成器尽可能快?

来自分类Dev

如何使wkhtmltopdf在尽可能多的情况下工作?

来自分类Dev

x:Bind与经典Binding的比较如何尽可能简洁?

来自分类Dev

如何尽可能多地输入x和y?

来自分类Dev

如何尽可能快地进行矩阵计算

来自分类Dev

如何使图像文件尽可能密集?

来自分类Dev

如何使用easystarjs尽可能遵循这种方式

来自分类Dev

如何使wkhtmltopdf在尽可能多的情况下工作?

来自分类Dev

如何尽可能地压缩图像?

Related 相关文章

  1. 1

    如何在Excel VBA中优化(或尽可能避免)循环

  2. 2

    如何避免渲染元素尽可能简单

  3. 3

    如何在 Excel 中优化 VBA 代码中的多个循环

  4. 4

    如何使JPanel中的组件尽可能伸展?

  5. 5

    如何使JPanel中的组件尽可能伸展?

  6. 6

    我如何加载尽可能少的服务以优化系统的最高性能:在4级执行?

  7. 7

    如何在y列中尽可能均匀地分配x项?

  8. 8

    如何在asp.net 3.5中尽可能长时间地保留会话

  9. 9

    如何在y列中尽可能均匀地分配x项?

  10. 10

    如何在flexbox中具有自动宽度内容而不破坏布局?(占用尽可能多的空间,并尽可能少地占用空间)

  11. 11

    如何在Excel中优化VBA函数

  12. 12

    尽可能缩短Excel公式

  13. 13

    如何在另一个表的特定列中定义的值中插入尽可能多的值

  14. 14

    如何在保留尽可能多的历史记录的同时从git的历史记录中清除单词?

  15. 15

    如何使小部件尽可能小(Android中的wrap_content)?

  16. 16

    如何向指定的JFrame中添加尽可能多的JPanel?

  17. 17

    如何使用 Handbrake 从大视频中尽可能快地制作三倍小的视频?

  18. 18

    如何将容器中的文本与尽可能小的容器对齐?

  19. 19

    是否应尽可能避免循环范围?

  20. 20

    如何创建尽可能短的URL唯一ID?

  21. 21

    如何使Python生成器尽可能快?

  22. 22

    如何使wkhtmltopdf在尽可能多的情况下工作?

  23. 23

    x:Bind与经典Binding的比较如何尽可能简洁?

  24. 24

    如何尽可能多地输入x和y?

  25. 25

    如何尽可能快地进行矩阵计算

  26. 26

    如何使图像文件尽可能密集?

  27. 27

    如何使用easystarjs尽可能遵循这种方式

  28. 28

    如何使wkhtmltopdf在尽可能多的情况下工作?

  29. 29

    如何尽可能地压缩图像?

热门标签

归档