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

调整VBA宏:定位列中首个空白单元格而非数据末尾单元格

解决VBA宏填充JF列空行的问题

原代码的核心问题是使用.End(xlUp)会直接定位到JF列最后一个非空单元格,跳过中间的空行,导致值只会追加到数据末尾。要实现填充中间空行的需求,需要改为查找JF列第一个空单元格。

修正后的基础代码

Sub S2WL()
    Dim MyValue As Variant
    MyValue = ThisWorkbook.ActiveSheet.Range("C2").Value
    
    With Workbooks("Dash").Worksheets("DASH")
        ' 定位JF列第一个空单元格的行号
        Dim firstEmptyRow As Long
        firstEmptyRow = .Columns("JF").Find(What:="", LookIn:=xlValues, LookAt:=xlWhole).Row
        
        ' 将值写入第一个空单元格
        .Cells(firstEmptyRow, "JF").Value = MyValue
    End With
End Sub

关键修正点

  1. 修复原代码语法错误:变量名My Value改为MyValue(VBA变量名不允许包含空格)
  2. 替换行号定位逻辑:用Find方法精准定位JF列第一个值为空的单元格,替代原有的.End(xlUp)逻辑

优化版(处理列全满的情况)

如果JF列所有单元格都有值,上述代码会报错,因此可以增加判断逻辑,当找不到空单元格时,自动追加到数据末尾:

Sub S2WL()
    Dim MyValue As Variant
    MyValue = ThisWorkbook.ActiveSheet.Range("C2").Value
    
    With Workbooks("Dash").Worksheets("DASH")
        Dim firstEmptyRow As Long
        Dim emptyCell As Range
        
        ' 按行顺序查找JF列第一个空单元格
        Set emptyCell = .Columns("JF").Find(What:="", LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext)
        
        If Not emptyCell Is Nothing Then
            firstEmptyRow = emptyCell.Row
        Else
            ' 列无空单元格时,追加到最后一行的下一行
            firstEmptyRow = .Cells(.Rows.Count, "JF").End(xlUp).Row + 1
        End If
        
        .Cells(firstEmptyRow, "JF").Value = MyValue
    End With
End Sub

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 20:10:19