如何用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列最后一行数据,无需手动指定行号
注意事项
- 替换代码中的
Sheet1为你的实际工作表名称 - 若产品名称行不需要填充C列,可删除
productArr(i, 1) = currentProduct这一行 - 若存在合并单元格,需先取消合并(合并单元格的加粗属性仅在左上角单元格生效)
内容的提问来源于stack exchange,提问作者S. Shotez
相关产品推荐
相关产品推荐

