excel - 运行时错误:查看#N/A 字符串时显示 13
问题描述
我正在尝试运行以下代码以查找 A 列是否具有关键字“SUP ID”。SUP ID 的任何实例都将更新为相邻列上的数字1,其余的都将变为0。但是,在找到 #N/A 字时,出现错误 Run-Time Error '13': Type Mismatch
Sub m()
For i = 2 To 10
If Cells(i, 1).Value = "SUP ID" Then
Cells(i, 2).Value = 1
Else
Cells(i, 2).Value = 0
End If
Next i
End Sub
解决方案
您将需要在现有 if 之前检查错误:
Sub m()
With ActiveSheet 'Better to use actual sheet: WorkSheets("Sheet1")
'load with all `0`
.range("B2:B10").Value = 0
For i = 2 To 10
If Not IsError(.Cells(i, 1)) Then
If .Cells(i, 1).Value = "SUP ID" Then
.Cells(i, 2).Value = 1
End If
End If
Next i
End with
End Sub
只需检查 9 个单元格即可快速运行,但随着范围的增加 vba 引用工作表的次数会减慢速度。
您可以使用数组来加速它。
Sub m()
With ActiveSheet 'Better to use actual sheet: WorkSheets("Sheet1")
Dim inputArr() As Variant
inputArr = .Range("A2:A10").Value
'Default of Integer is `0`
Dim outputArr() As Integer
ReDim outputArr(1 To UBound(inputArr, 1), 1 To 1) As Integer
For i = LBound(inputArr, 1) To UBound(inputArr, 1)
If Not IsError(inputArr(i, 1)) Then
If inputArr(i, 1) = "SUP ID" Then
outputArr(i, 1) = 1
End If
End If
Next i
.Range("B2").Resize(UBound(inputArr, 1)).Value = outputArr
End With
End Sub
推荐阅读
- node.js - Node 的 bcrypt 比较返回 False 虽然它是真的
- python-3.x - 如何使路径能够在 pytest 之外运行测试
- python - 在 Python 中使用用户代理在 GET 请求中传递什么?
- mqtt - 如何根据 tcpdump 中的主题名称过滤 MQTT 流量
- oracle - 在 Oracle 中的同一存储过程中更新查询
- mysql - MYSQL 数据库修复耗时极长
- haskell - 如何快速在 Int 和 Word 之间进行位转换?
- php - 如何使用原始文件名发送 php 邮件附件
- javascript - 我们可以减少图表条之间的差距吗?
- windows - CF_OPERATION_INFO 结构中的 CF API CF_SYNC_STATUS 字段