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

如何实现当A列等于"D"时,用对应B列值自动填充C列至下一个"A=D"处

实现Excel中按A列标记批量填充C列内容

需求说明

初始状态:A列存在多个值为"D"的单元格,对应B列是不同的标题内容,C列处于空白状态。
期望效果:当A列出现"D"时,用该单元格对应的B列值填充C列从当前位置开始的所有空白单元格,直到下一个A列"D"出现,再切换为新的B列值继续填充。


方法一:公式法(无需编程,直接下拉)

在C2单元格输入以下公式,选中C2单元格后下拉填充至目标区域即可:

=LOOKUP(2,1/(A$2:A2="D"),B$2:B2)

公式原理

  • A$2:A2="D":判断从A2到当前行的A列单元格是否等于"D",生成由TRUE/FALSE组成的数组
  • 1/(...):将TRUE转为1,FALSE转为错误值#DIV/0!
  • LOOKUP(2,1/(...),B$2:B2):LOOKUP会忽略错误值,找到最后一个等于1的位置,返回对应的B列值,实现“锁定最近一次出现的D对应的B值”的效果

方法二:VBA批量填充(适合大数据量自动处理)

按Alt+F11打开VBA编辑器,插入新模块,粘贴以下代码后运行:

Sub FillCColumn()
    Dim ws As Worksheet
    Dim lastRow As Long
    Dim currentBVal As String
    Dim i As Long
    
    Set ws = ActiveSheet ' 可改为指定工作表,比如Set ws = ThisWorkbook.Sheets("Sheet1")
    lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
    
    For i = 2 To lastRow
        If ws.Cells(i, "A").Value = "D" Then
            currentBVal = ws.Cells(i, "B").Value
            ws.Cells(i, "C").Value = currentBVal
        Else
            If ws.Cells(i, "C").Value = "" Then
                ws.Cells(i, "C").Value = currentBVal
            End If
        End If
    Next i
End Sub

代码说明

  • 自动获取当前工作表A列最后一行数据
  • 遍历每行,遇到A列为"D"时更新当前要填充的B列值,并填充当前C单元格
  • 非"D"行且C列空白时,用最近一次记录的B列值填充

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 21:22:12