如何修改VBA代码实现逐行复制指定列范围内的非空单元格值
如何修改VBA代码实现逐行复制指定列范围内的非空单元格值
嘿,我懂你的需求啦!你当前的代码只处理了第2行的单元格,要让它自动遍历每一行直到最后一个有数据的行,其实只需要在外层加一个行循环就搞定了,我帮你调整一下代码:
Sub CopyNonBlankCells() Dim lastRow As Long Dim currentRow As Long Dim SrchRng As Range, cel As Range ' 获取Sheet1中最后一个有数据的行号(这里用BI列判断,你也可以换成其他有数据的列) lastRow = Sheet1.Cells(Sheet1.Rows.Count, "BI").End(xlUp).Row ' 从第2行开始遍历到最后一行 For currentRow = 2 To lastRow ' 每次循环更新当前行的搜索范围 Set SrchRng = Sheet1.Range("BI" & currentRow & ":CZ" & currentRow) For Each cel In SrchRng If cel.Value <> "" Then ' 将非空值写入当前行的AH列 Sheet1.Range("AH" & currentRow).Value = cel.Value End If Next cel Next currentRow End Sub
给你解释几个关键的修改点:
- 新增了
lastRow变量,用来精准定位到表格最后一行(用BI列判断是因为你的搜索范围从BI列开始,也可以换成其他确定有数据的列) - 外层加了
For currentRow = 2 To lastRow循环,让代码能逐行处理每一行的数据 - 每次循环都会更新搜索范围和目标单元格的行号,确保操作对应到当前处理的行
另外提醒你个小细节:原来的逻辑是如果当前行里有多个非空单元格,后面的单元格值会覆盖前面写到AH列的值,最后AH列只会保留该行最后一个非空单元格的内容。如果需要把所有非空值合并到AH列(比如用逗号分隔),可以告诉我,我再帮你调整代码哦!
备注:内容来源于stack exchange,提问作者Rax
相关产品推荐
相关产品推荐

