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

如何用VBA返回一行中首个非空白单元格的值?

实现一行中首个非空白单元格值的VBA代码

问题分析

你需要在每行的指定5列范围内找到首个非空单元格,并将其值写入目标列。原代码的If-Then逻辑仅能处理紧邻列的情况,无法遍历后续列,因此需要改为循环遍历的方式实现需求。

修正后的VBA代码

Sub GetFirstNonBlank()
    Dim lRow As Long
    Dim i As Long
    Dim col As Integer
    Dim targetCol As Integer, startCol As Integer, endCol As Integer
    
    ' 自定义列参数:目标列、遍历起始列、遍历结束列(示例为目标列G=7,遍历H到L共5列=8到12)
    targetCol = 7
    startCol = 8
    endCol = 12
    
    ' 获取D列最后一行数据的行号
    lRow = Cells(Rows.Count, "D").End(xlUp).Row
    
    ' 遍历每行数据
    For i = 2 To lRow
        ' 在当前行的指定5列中找首个非空值
        For col = startCol To endCol
            ' 排除空单元格和仅含空格的单元格
            If Not IsEmpty(Cells(i, col).Value) And Trim(Cells(i, col).Value) <> "" Then
                Cells(i, targetCol).Value = Cells(i, col).Value
                Exit For ' 找到首个非空值后退出内层循环,无需继续遍历
            End If
        Next col
    Next i
End Sub

代码说明

  • 可通过修改targetCol、startCol、endCol三个参数,灵活调整目标列和需要遍历的5列范围
  • 加入Trim判断是为了避免把仅含空格的单元格误判为非空
  • 找到首个非空值后立即退出内层循环,能提升代码运行效率

内容的提问来源于stack exchange,提问作者user29028421

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 05:32:06