gpt4 book ai didi

excel - 从单元格中删除内容,如果 IsNumber = False

转载 作者:行者123 更新时间:2023-12-04 21:22:10 25 4
gpt4 key购买 nike

所以我有这个程序;从远程系统扫描值。有时,如果网络出现故障,它可能会超时,并且会出现 #nan 错误或类似的东西。

当我尝试将该错误消息写入数据库时​​;因为它正在寻找一个数值,所以它会因为“数据类型不匹配”而出错。

为了解决这个问题,我决定尝试清理结果。所以我有下面的代码。它大部分时间都有效;我看到它失败的是,如果中途有一个数字,然后它又会出错。一旦它到达数字,它似乎会停止循环并且不会清理其他任何东西。

有人可以给我的任何帮助都会很棒;也许我这样做很糟糕。我试图举例说明我想在下面看到的内容。如果您有任何建议或问题,请告诉我。

Private Sub Clean()
'Select Current Row For where to start cleaning. LoopIndex is a global variable.
'Just giving the line of where to read from so I do not need to read the whole sheet.
Range("B" & LoopIndex).Select

'Start the loop, to go through the entire row.
Do Until IsEmpty(ActiveCell)

'Checks if it is a number value; if it is not it will clear out the data.
If IsNumeric(ActiveCell.Value) = False Then
ActiveCell.Value = ""
End If
ActiveCell.Offset(0, 1).Select
Loop
End Sub

它看起来像什么。
|A     |B     |C     |D     |
|#error|#Error|3 |#Error|

我希望它看起来像什么。
|A     |B     |C     |D     |
| | |3 | |

它在做什么。
|A     |B     |C     |D     |
| | |3 |#Error|

最佳答案

尝试这个

Sub RemoveErrors(TheRange As Range)
Dim c
For Each c In TheRange
If IsError(c) Then c.Value = ""
Next c
End Sub

编辑:没有循环的版本如果是公式错误可能会加快速度
Sub RemoveErrors(TheRange As Range)
On Error Resume Next
TheRange.SpecialCells(xlCellTypeFormulas, xlErrors).Value = vbNullString
On Error GoTo 0
End Sub

像这样使用它:
Sub Test()
RemoveErrors Range("A1:D21")
End Sub

如果您更喜欢使用 IsNumeric函数,然后使用这个:
Sub RemoveNAN(TheRange As Range)
Dim c
For Each c In TheRange
If IsNumeric(c) = False Then c.Value = ""
Next c
End Sub

关于excel - 从单元格中删除内容,如果 IsNumber = False,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42790625/

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