gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 21:19:52 26 4
gpt4 key购买 nike

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





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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com