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

Excel VBA需求:从X列首空单元格自动填充公式至B列最后行

修正VBA代码实现自动填充需求

原代码存在以下问题:

  • 依赖Select和ActiveCell操作,易因选中区域变化出错,且效率低
  • 起始空白单元格定位逻辑错误,若X4下方无数据,会跳到表格底部而非真正的第一个空行
  • 公式不符合需求(仅写了=Today(),未实现除以对应值),且公式写法混用导致填充失败
  • Range(col & lastRow)的语法错误,无法正确定位目标区域

以下是修正后的代码,直接实现从X列第一个空白单元格开始,填充=TODAY()/对应值到B列最后一行:

Sub FillTodayFormula()
    Dim lastRowB As Long
    Dim firstBlankRowX As Long
    
    ' 获取B列最后一行的行号
    lastRowB = Range("B" & Rows.Count).End(xlUp).Row
    
    ' 获取X列第一个空白单元格的行号
    firstBlankRowX = Range("X" & Rows.Count).End(xlUp).Row + 1
    
    ' 若X列第一个空行已超过B列数据行,直接退出
    If firstBlankRowX > lastRowB Then Exit Sub
    
    ' 批量填充公式:这里假设"对应值"是同一行的B列,若为其他列请修改B为对应列标
    Range("X" & firstBlankRowX & ":X" & lastRowB).Formula = "=TODAY()/B" & firstBlankRowX
    
    ' 若要自动适配每一行的对应列,推荐用R1C1写法(示例为引用同一行的B列,即往左数22列)
    ' Range("X" & firstBlankRowX & ":X" & lastRowB).FormulaR1C1 = "=TODAY()/RC[-22]"
End Sub

关键说明:

  • 起始行定位:Range("X" & Rows.Count).End(xlUp).Row + 1能精准找到X列最后一个有数据行的下一行,即第一个空白行
  • 公式适配:如果"对应值"不是B列,把公式中的B改成目标列的列标即可;用R1C1写法无需手动调整行号,自动对应每一行的同列单元格
  • 防无效操作:增加判断避免在X列已无空白行时执行填充

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 17:42:50