使用 For Each 语句将存储为文本的数字转换为数字

威尔克莱因

我正在尝试将存储在文本中的数字转换为多个工作表上的数字。我的问题是我拼凑的代码似乎花费了过多的时间。我正在使用 For Each 语句循环遍历必要的工作表和范围。它不会使 Excel 崩溃,它只是看起来永远运行。

Sub ConvertTextToNumber()
    Application.ScreenUpdating = False
    Dim WshtNames As Variant
    Dim WshtNameCrnt As Variant
    Dim r As Range

    WshtNames = Array("Financial Data", "Site Data ", "Org Data", "Program Data")

    For Each WshtNameCrnt In WshtNames
    On Error Resume Next
        For Each r In Worksheets(WshtNameCrnt).UsedRange.SpecialCells(xlCellTypeConstants)
            If IsNumeric(r) Then r.Value = Val(r.Value)
        Next
    Next
    Application.ScreenUpdating = False
End Sub

当我停止运行脚本并单击 Debug 时,它似乎被第一个 Next 语句赶上了。我认为我用来转换值的方法比必要的时间密集得多,因此在多张纸上运行它甚至更糟。

我乐于接受任何和所有建议,以使此过程运行得更快。提前致谢!

布兰登巴尼

试试下面的代码。我使用了索引号,而不是尝试使用变体遍历数组。我可能是错的,但我认为 For Each 仅适用于集合。如果我错了,请有人纠正我。(编辑:我确实弄错了。For Each 在这里工作得很好。)

无论如何,数组上的索引号是最佳实践。

我还删除了您的 Resume Next 并妥善处理了它。我强烈建议不要使用 Resume Next。我想不出有什么事件是 Resume Next 不能被良好的逻辑所取代。

Sub ConvertTextToNumber()
    Application.ScreenUpdating = False

    ' These two statements should further improve processing time.
    ' The first prevents formulas from calculating. The second prevents
    ' any background events from firing (mostly for Event triggered macros).
    Application.Calculation = xlCalculationManual
    Application.EnableEvents = False
    Dim WshtNames As Variant
    Dim i as Long
    Dim r As Range

    WshtNames = Array("Financial Data", "Site Data ", "Org Data", "Program Data")

    ' When looping over an array use an index number.
    ' I this case, 'i' will go from the lowest range of the array
    ' all the way through to the highest range of the array.
    For i = LBound(WshtNames) to Ubound(WshtNames)
        'On Error Resume Next ' It is best to catch the errors, dont just skip them.
        If Not Worksheets(WshtNames(i)) Is Nothing Then
            For Each r In Worksheets(WshtNames(i)).UsedRange.SpecialCells(xlCellTypeConstants)
                ' No need to check for an empty string here since
                ' IsNumeric() will return false for non-numbers.
                If IsNumeric(r) Then r.Value = Val(r.Value)
            Next
        Else
            ' Put your error handling in here, or you can just skip it
            ' I tend to use debug.print just to keep track.
            Debug.Print WshtNames(i) & " doesn't exist."
        End If
    Next
    Application.ScreenUpdating = True

    Application.Calculation = xlCalculationAutomatic
    Application.EnableEvents = True
End Sub

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用python将多个csv转换为xls,并将数字存储为整数而不是文本

来自分类Dev

使用 SUMIF 将文本转换为数字

来自分类Dev

使用dplyr中的mutate_each将所有数字变量转换为因数

来自分类Dev

如何转换存储为文本的数字:使用Jrxml / jasper

来自分类Dev

使用Excel VBA if语句将值转换为数字

来自分类Dev

使用POI将数字存储为Excel中的文本警告

来自分类Dev

使用C ++中的find语句将罗马数字转换为数字

来自分类Dev

将存储为文本的数字转换为数字?

来自分类Dev

使用条件将数字替换为文本

来自分类Dev

使用javascript将数字转换为日期

来自分类Dev

使用NSNumberFormatter将数字转换为格式

来自分类Dev

使用堆栈将数字转换为字符

来自分类Dev

为什么jQuery的$ .each将数字转换为对象?

来自分类Dev

为什么jQuery的$ .each将数字转换为对象?

来自分类Dev

使用开关盒将数字转换为罗马数字

来自分类Dev

如何使用嵌套的switch语句将数字转换为0到9999之间的单词

来自分类Dev

我可以使用什么程序将文本转换为二进制数字?

来自分类Dev

我可以使用什么程序将文本转换为二进制数字?

来自分类Dev

我们如何使用宏将数字转换为文本?

来自分类Dev

将格式为1:5的范围的文本导入从带有:运算符的字符转换为数字字符串/值以在函数中使用

来自分类Dev

使用jsonb_each将Postgresql查询转换为sqlalchemy

来自分类Dev

Cloudant-使用数字存储为文本的Lucene范围搜索

来自分类Dev

使用Java在XLS中将文本转换为数字

来自分类Dev

使用Java在xls中将文本转换为数字

来自分类Dev

仅使用VBA将存储为文本的小时和分钟转换为分钟

来自分类Dev

在C中使用if和switch语句进行练习:编写代码以将2位数字转换为单词

来自分类Dev

将存储为文本的数字转换为Excel VBA中数字的最简单方法

来自分类Dev

使用Apply将数字列转换为带标签的因子

来自分类Dev

如何使用Javascript将字母转换为数字?

Related 相关文章

  1. 1

    使用python将多个csv转换为xls,并将数字存储为整数而不是文本

  2. 2

    使用 SUMIF 将文本转换为数字

  3. 3

    使用dplyr中的mutate_each将所有数字变量转换为因数

  4. 4

    如何转换存储为文本的数字:使用Jrxml / jasper

  5. 5

    使用Excel VBA if语句将值转换为数字

  6. 6

    使用POI将数字存储为Excel中的文本警告

  7. 7

    使用C ++中的find语句将罗马数字转换为数字

  8. 8

    将存储为文本的数字转换为数字?

  9. 9

    使用条件将数字替换为文本

  10. 10

    使用javascript将数字转换为日期

  11. 11

    使用NSNumberFormatter将数字转换为格式

  12. 12

    使用堆栈将数字转换为字符

  13. 13

    为什么jQuery的$ .each将数字转换为对象?

  14. 14

    为什么jQuery的$ .each将数字转换为对象?

  15. 15

    使用开关盒将数字转换为罗马数字

  16. 16

    如何使用嵌套的switch语句将数字转换为0到9999之间的单词

  17. 17

    我可以使用什么程序将文本转换为二进制数字?

  18. 18

    我可以使用什么程序将文本转换为二进制数字?

  19. 19

    我们如何使用宏将数字转换为文本?

  20. 20

    将格式为1:5的范围的文本导入从带有:运算符的字符转换为数字字符串/值以在函数中使用

  21. 21

    使用jsonb_each将Postgresql查询转换为sqlalchemy

  22. 22

    Cloudant-使用数字存储为文本的Lucene范围搜索

  23. 23

    使用Java在XLS中将文本转换为数字

  24. 24

    使用Java在xls中将文本转换为数字

  25. 25

    仅使用VBA将存储为文本的小时和分钟转换为分钟

  26. 26

    在C中使用if和switch语句进行练习:编写代码以将2位数字转换为单词

  27. 27

    将存储为文本的数字转换为Excel VBA中数字的最简单方法

  28. 28

    使用Apply将数字列转换为带标签的因子

  29. 29

    如何使用Javascript将字母转换为数字?

热门标签

归档