excel - 如何从单元格/列中删除非数字字符

标签 excel vba

这个问题在这里已经有了答案:





Remove non-numeric characters from numeric fields without loop

(3 个回答)


3年前关闭。




我目前从特定列 (AK) 中的单元格中删除所有非数字字符的解决方案需要我的代码 7 分钟才能运行 360 行。当我使用“应用程序选择”运行代码选择所有 360 个单元格时,只需 10 秒即可运行。理想情况下,我希望宏自己选择标准。请注意,数据是通过 excel 从查询中提取的。

我在网上搜索过,但没有发现代码自行选择列的地方。我自己创建的代码需要 7 分钟和 10 秒。

下面的代码需要 7 分钟才能运行,但不需要用户选择数据。

Dim finRow As String
    finRow = ActiveSheet.Range("A100000").End(xlUp).Row

Set myRange = ActiveSheet.Range("AK2:AK" & finRow)
For Each myCell In myRange
    LastString = ""
    For I = 1 To Len(myCell.Value)
        mT = Mid(myCell.Value, I, 1)
        If mT Like "[0-9]" Then
            tString = mT
        Else
            tString = ""
        End If
        LastString = LastString & tString
    Next I
    myCell.Value = LastString
Next

下面的代码需要 10 秒,但用户必须在每次运行代码时选择标准。
Set myRange = Application.Selection
Set myRange = Application.InputBox("select one Range that you want to remove non numeric characters", "RemoveNonNum", myRange.Address, Type:=8)
For Each myCell In myRange
   LastString = ""
    For I = 1 To Len(myCell.Value)
        mT = Mid(myCell.Value, I, 1)
        If mT Like "[0-9]" Then
            tString = mT
        Else
            tString = ""
        End If
        LastString = LastString & tString
    Next I
   myCell.Value = LastString
Next

当代码自行选择标准时,我希望输出为 10 秒。我感谢所有的帮助。谢谢你,马特

最佳答案

使用变体数组并对其进行迭代。迭代范围很耗时。

Dim finRow As Long
finRow = ActiveSheet.Range("A100000").End(xlUp).Row

Dim myRange() As Variant
myRange = ActiveSheet.Range("AK2:AK" & finRow)

Dim k As Long
For k = LBound(myRange, 1) To UBound(myRange, 1)
    Dim lastSring As String
    laststring = ""

    Dim i As Long
    For i = 1 To Len(myRange(k, 1))
        Dim mT As String
        mT = Mid(myRange(k, 1), i, 1)
        If mT Like "[0-9]" Then
            laststring = laststring & mT
        End If
    Next i
    myRange(k, 1) = laststring
Next

ActiveSheet.Range("AK2:AK" & finRow).Value = myRange

关于excel - 如何从单元格/列中删除非数字字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55399305/

相关文章:

excel - 根据 =RIGHT 值的值执行不同的 VLOOKUP

c# - 使用 C# 实现 Excel 自动化

vba - 取消选中 MSWord 中的 "Formatting"跟踪更改标记选项? (Office 365 for Mac v16.26)

sql-server - 自动将多个 Excel 工作表导入到 SQL 中

vba - 使用 VBA-Macros 抓取源代码

excel - 检查文件是否只读的VBA代码

vba - 是否可以获得作为过滤器结果的列的最常见值(字符串)? VBA

excel - 计算excel中包含一些字符串子集的所有行

excel - 在“我的文档”中创建一个文件夹并将工作簿保存到该文件夹​​中

excel - 这个工作簿在 Excel 2018 中不起作用?