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
相关产品推荐
相关产品推荐

