VBA实现:当B列非空且非#NA时为对应行D列添加文本
Excel VBA实现B列非空且非#NA时为D列添加文本
先明确需求逻辑:遍历目标工作表的行,当同一行B列单元格非空且不为#NA错误值时,给对应行的D列添加指定文本(比如示例中的"PK")。
原代码存在的问题
- 遍历范围错误:原代码遍历D列,但实际需要检查的是B列的单元格状态
- 条件判断不符合需求:用
p>0无法判断非空和非#NA的要求 - 赋值逻辑错误:直接给整列M赋值,而非对应行的D列
修正后的代码
Dim ws As Worksheet Dim lastRow As Long Dim cell As Range ' 指定目标工作表 Set ws = ThisWorkbook.Sheets("Existing") ' 获取B列最后一行的行号 lastRow = ws.Cells(ws.Rows.Count, "B").End(xlUp).Row ' 遍历B列从第2行到最后一行的单元格 For Each cell In ws.Range("B2:B" & lastRow) ' 同时满足:非空 且 不是#NA错误值 If Not IsEmpty(cell.Value) And Not (IsError(cell.Value) And cell.Value = CVErr(xlErrNA)) Then ' 给对应行的D列设置文本 ws.Cells(cell.Row, "D").Value = "PK" End If Next cell
关键条件说明
Not IsEmpty(cell.Value):判断B列单元格是否非空Not (IsError(cell.Value) And cell.Value = CVErr(xlErrNA)):先判断单元格是否为错误值,再确认不是#NA类型的错误(xlErrNA是Excel内置的#NA错误常量)
内容的提问来源于stack exchange,提问作者little turtle
相关产品推荐
相关产品推荐

