excel - IF 语句未正确读取值
问题描述
我写了一个 IF 语句,它应该根据某些代码更新同一行中的某些值。但是,当 if 语句读取我的单元格时,它没有分配正确的逻辑。我尝试将列转换为数字,一般,反之亦然,它仍然不起作用。例如,值 309 应该默认为“CHECK”,但它在第一个 if 语句中被捕获,为什么会发生这种情况?PS-我也尝试过摆脱数字周围的“”,但它不起作用。
Set rngVis = ws.Range("I2:I" & Lr).SpecialCells(xlCellTypeVisible)
For Each c In rngVis
If c.Offset(0, 0).Value = "302" Or "304" Or "305" Or c.Offset(0, 0).Value = vbNullString Then
c.Offset(0, 19).Value = "IAG-RoR"
c.Offset(0, 25).Value = "BAD"
c.EntireRow.Columns("A:AG").Interior.ColorIndex = 3
ElseIf c.Offset(0, 0).Value = "303" Or "306" Or "307" Or "310" Then
'Do nothing'
Else
c.Offset(0, 19).Value = "CHECK"
c.Offset(0, 25).Value = "CHECK"
c.EntireRow.Columns("A:AG").Interior.ColorIndex = 28
End If
Next c
解决方案
而不是If/ElseIf/Else
你应该使用Select Case
.
这将简化事情并避免重复。
Set rngVis = ws.Range("I2:I" & Lr).SpecialCells(xlCellTypeVisible)
For Each c In rngVis
Select Case c.Value
Case "302", "304", "305", vbNullString
c.Offset(0, 19).Value = "IAG-RoR"
c.Offset(0, 25).Value = "BAD"
c.EntireRow.Columns("A:AG").Interior.ColorIndex = 3
Case "303", "306", "307", "310"
'Do nothing'
Case Else
c.Offset(0, 19).Value = "CHECK"
c.Offset(0, 25).Value = "CHECK"
c.EntireRow.Columns("A:AG").Interior.ColorIndex = 28
End Select
Next c
推荐阅读
- hadoop - 从 Oracle 导入 Sqoop 失败,出现“线程“主”java.lang.NoClassDefFoundError:org/apache/hadoop/mapreduce/InputFormat 中的异常”
- machine-learning - 位置坐标表示
- python - 保存原始 html 表单 django
- c - 在C中找到一个数字的无平方除数
- java - 在收集应用程序中添加下载按钮
- rabbitmq - 将“amq.rabbitmq.event”交换配置到不同的虚拟主机?
- c# - C#- 使用 MySQL 执行命令时发生致命错误
- mysql - 如何在 Mac 上将 Sakila 数据库安装到 MySQL Workbench 中?
- c - realloc 是否在重新分配的字符串中包含 \0?
- mongodb - Apollo 客户端、GraphQL、Mongo DB 中的深度学习