You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.22 07:28:20