excel - 在 VBA 中使用 Len 和左(或中)
问题描述
我需要做的是使用 VBA 从范围中删除每个单独的“NA”。无需移动细胞。
我不能做(替换),因为其他字符串中可能有“na”。我认为“Instr”不会出于同样的原因工作。
我尝试了几种我认为可行的方法,但由于我无法理解的原因,它们没有。
起初我尝试了 Left + Len,如下所示:
dim nb as workbook
for i = 2 to nb.sheets(1).cells(rows.count, 17).end(xlup).row
if left(range("Q" & i).value, 2, "NA", Len(range("Q" & i).value)) then
nb.sheets(1).range("Q" & i).value = ""
end if
next i
当那不起作用时,我尝试了这个:
for i = 2 to nb.sheets(1).cells(rows.count, 17).end(xlup).row
if mid(range("Q" & i).value, 0 + 2, Len(range("Q" & i).value)) And _
Instr(1, (range"Q" & i).value), "NA") then
nb.sheets(1).range("Q" & i).value = ""
end if
next i
我还尝试了许多其他方法来重新排列 Len、Left 和 Mid,但都没有奏效。
即使解决方案不必使用 Left (mid) 和 Len,有没有办法做到这一点?如果没有,还有其他方法吗?
解决方案
Range
这将更新您指定的每个单元格。
Sub test()
Dim c As Range
For Each c In Range("A1:Z100")
If c.Value = "NA" Then c.Value = ""
Next
End Sub
但是对于这么简单的事情,只使用内置的替换更有意义。
推荐阅读
- c# - 计算实时并发流的数量
- caching - Laravel 7 Cache via Middleware 未访问缓存内容并发送 X-Proxy-Cache: MISS 标头
- ios - 如何使用 HMAccessoryPayLoad 添加 HomeKit 配件?
- html - 将css应用于内部(移动)
- gcc - Intel 线程积木 gcc 版本
- tensorflow - 如何将 PoseNet ResNet50 tfjs 模型转换为 tflite?
- amazon-ec2 - 使用 Terraform 通过 EC2 创建时,如何向 AWS EBS 添加标签?
- java - servlet [dispatcherServlet] 的 Servlet.service() 在路径 [] 的上下文中抛出异常 NullPointerException
- mysql - 重构 MySQL 表,为每个 id 创建一列
- python - 从网站请求数据时出现验证码错误