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

Excel VBA遍历F列按条件在同行G列写入对应公式的实现方法

VBA 动态生成F列对应G列公式实现方案

你原有代码有两个核心问题,修正后即可正常运行:

  • 范围赋值写法错误:LastRow是存储行号的数值变量,不能直接作为Range()的参数,需要拼接成合法的单元格范围地址
  • 同行跨列定位方法:遍历F列单元格时,用Offset(0,1)即可定位到同行右侧1列的G列单元格,不需要额外计算行列号

完整可运行代码

Sub WriteGColumnFormula()
    Dim ws As Worksheet
    Dim LastRow As Long
    Dim CL As Range
    Dim Rng As Range
    
    ' 绑定要处理的工作表,避免激活错表导致运行异常
    Set ws = ThisWorkbook.Worksheets("Sheet1")
    
    ' 动态获取F列最后一个有值的行号,适配行数频繁变动的场景
    LastRow = ws.Cells(ws.Rows.Count, "F").End(xlUp).Row
    
    ' 定义要遍历的F列范围:如果第1行是表头,把F1改成F2即可
    Set Rng = ws.Range("F1:F" & LastRow)
    
    ' 遍历逐行判断写入公式
    For Each CL In Rng
        If CL.Value = "" Then
            ' F列空值:G列写入同行Q列引用
            CL.Offset(0, 1).Formula = "=Q" & CL.Row
        Else
            ' F列有供应商编号:G列写入指定VLOOKUP公式
            CL.Offset(0, 1).Formula = "=VLOOKUP(F" & CL.Row & ",Mapping!$A$4:$B$1000,2,FALSE)"
        End If
    Next CL
End Sub

注意事项

  • 如果你的数据集第一行是表头,不需要处理表头行,把范围定义行的"F1:F"修改为"F2:F"即可
  • 代码直接写入单元格的Formula属性,和手动在单元格输入公式效果完全一致,后续F列/Q列/Mapping表数据更新时,G列公式会自动重算
  • 直接通过对象属性赋值,不需要逐行选中单元格,运行效率更高

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 18:42:37