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

如何用VBA将A列加粗产品名批量填充至C列对应行?

高效VBA批量填充对应产品名称至C列

针对你5000+行的Excel数据,用数组操作实现的VBA宏是最高效的方案——它通过减少与工作表单元格的频繁交互,大幅提升处理速度,核心逻辑是记录当前生效的加粗产品名称,批量填充到后续行的C列。

实现代码

Sub FillProductNames()
    Dim ws As Worksheet
    Dim lastRow As Long
    Dim dataArr As Variant, productArr As Variant
    Dim currentProduct As String
    Dim i As Long
    
    ' 指定目标工作表,替换为你的实际表名
    Set ws = ThisWorkbook.Sheets("Sheet1")
    
    ' 获取A列最后一行数据
    lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
    
    ' 将A列数据读入数组(用于提取内容),初始化C列写入数组
    dataArr = ws.Range("A1:A" & lastRow).Value
    productArr = ws.Range("C1:C" & lastRow).Value
    
    ' 遍历数组,填充对应产品名称
    For i = 1 To lastRow
        ' 判断当前A列单元格是否为加粗的产品名称
        If ws.Cells(i, "A").Font.Bold Then
            currentProduct = dataArr(i, 1)
            ' 可选:产品名称行的C列也填充自身,不需要可注释此行
            productArr(i, 1) = currentProduct
        Else
            ' 非产品行填充最近的加粗产品名称
            productArr(i, 1) = currentProduct
        End If
    Next i
    
    ' 将批量处理后的结果一次性写入C列
    ws.Range("C1:C" & lastRow).Value = productArr
    
    MsgBox "产品名称填充完成!", vbInformation
End Sub

关键优化点

  • 数组读写优化:仅通过两次工作表交互(读入、写出)完成操作,比逐行修改单元格快数倍,尤其适合大体积数据
  • 状态记录逻辑:仅在遇到加粗的产品名称时更新当前产品变量,其余行直接复用,避免重复判断
  • 自适应范围:自动识别A列最后一行数据,无需手动指定行号

注意事项

  1. 替换代码中的Sheet1为你的实际工作表名称
  2. 若产品名称行不需要填充C列,可删除productArr(i, 1) = currentProduct这一行
  3. 若存在合并单元格,需先取消合并(合并单元格的加粗属性仅在左上角单元格生效)

内容的提问来源于stack exchange,提问作者S. Shotez

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 08:55:17