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

如何使用VBA将指定区域的特定单元格复制到新工作表区域

VBA宏修正方案
Option Explicit
' BOM Generation
Sub BuildBOM()
    Dim c As Range
    Dim j As Long ' 用Long避免行数超过Integer上限报错
    Dim SourceSht As Worksheet
    Dim TargetSht As Worksheet

    ' 定义源表和目标表
    Set SourceSht = ThisWorkbook.Sheets("Estimate")
    Set TargetSht = ThisWorkbook.Sheets("BOM")
    
    ' 写入起始行
    j = 9
    
    ' 先清空BOM表原有数据
    TargetSht.Rows(j & ":" & TargetSht.Rows.Count).ClearContents

    ' 第一个循环:处理Materials表(A列非空行)
    For Each c In SourceSht.Range("A9:A100")
        If Trim(c.Value) <> "" Then ' 加Trim过滤空格导致的误判
            ' 对应复制A→A、C→B、G→C
            TargetSht.Cells(j, "A").Value = SourceSht.Cells(c.Row, "A").Value
            TargetSht.Cells(j, "B").Value = SourceSht.Cells(c.Row, "C").Value
            TargetSht.Cells(j, "C").Value = SourceSht.Cells(c.Row, "G").Value
            j = j + 1
        End If
    Next c

    ' 第二个循环:处理Labour表(I列非空行),接续上一个循环的最后一行写入
    For Each c In SourceSht.Range("I9:I100")
        If Trim(c.Value) <> "" Then
            ' 对应复制I→A、K→B、M→C
            TargetSht.Cells(j, "A").Value = SourceSht.Cells(c.Row, "I").Value
            TargetSht.Cells(j, "B").Value = SourceSht.Cells(c.Row, "K").Value
            TargetSht.Cells(j, "C").Value = SourceSht.Cells(c.Row, "M").Value
            j = j + 1
        End If
    Next c

    ' 可选:如果需要保留原表单元格格式,可将上述赋值逻辑替换为Copy Paste逻辑,示例如下:
    ' SourceSht.Cells(c.Row, "A").Copy
    ' TargetSht.Cells(j, "A").PasteSpecial Paste:=xlPasteAll
    ' Application.CutCopyMode = False

End Sub

核心修改点

  • 去掉了原逻辑中错误的整列复制操作,改为逐行读取指定列的值写入目标表,不会出现整列覆盖的问题
  • 补全了所有变量声明,添加Option Explicit避免未定义变量导致的运行错误
  • 把行数变量j的类型改为Long,避免后续行数超过Integer上限(32767)时报错
  • 添加Trim()函数过滤单元格首尾空格,避免空格导致的非空误判
  • 补充了第二个循环处理Labour表的逻辑,自动沿用上一个循环的最终行号继续写入,符合需求中「接在第一部分数据之后」的要求
  • 移除了不必要的TargetSht.Activate操作,直接通过工作表对象操作单元格,运行效率更高,也不会出现工作表切换的闪屏问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 00:48:04