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

VBA实现工作表指定区域复制至另一工作表并剔除空白行

复制计算值并剔除空白行的VBA解决方案

针对你的需求——复制Refactor区域的公式计算值到OutputSheet的E5起始位置,且剔除首列为空的空白行,同时不修改原工作表的行结构,这里提供两种实用方案:

方案一:利用AutoFilter筛选非空行(简单直观)

借助Excel的筛选功能临时过滤空白行,复制可见单元格即可,无需修改原数据:

Sub RangeRefactor_Filter()
    Dim wsI As Worksheet
    Dim wsO As Worksheet
    Dim rngRefactor As Range
    
    Set wsI = ThisWorkbook.Sheets("InputSheet")
    Set wsO = ThisWorkbook.Sheets("OutputSheet")
    Set rngRefactor = wsI.Range("Refactor")
    
    ' 清除原区域的筛选状态(避免干扰)
    If wsI.AutoFilterMode Then wsI.AutoFilterMode = False
    
    ' 基于首列计算值筛选非空行
    rngRefactor.AutoFilter Field:=1, Criteria1:="<>"
    
    ' 复制可见单元格的值到目标位置
    rngRefactor.SpecialCells(xlCellTypeVisible).Copy
    wsO.Range("E5").PasteSpecial xlPasteValues
    
    ' 恢复原区域的无筛选状态
    wsI.AutoFilterMode = False
    
    ' 清除剪贴板状态
    Application.CutCopyMode = False
End Sub

说明

  • 该方法仅临时筛选数据,不会删除或修改原工作表的任何行,完全符合你的需求;
  • 依赖首列的计算值判断空白行,筛选逻辑和你要求的一致;
  • 代码简洁,易理解和维护,适合小数据量场景(你的220行完全适用)。

方案二:数组内存处理(高效无交互)

如果需要更高效的处理(比如未来数据量增大),可以将区域数据加载到内存数组中,遍历筛选后直接写入目标区域:

Sub RangeRefactor_Array()
    Dim wsI As Worksheet
    Dim wsO As Worksheet
    Dim inputArr As Variant
    Dim outputArr As Variant
    Dim i As Long, j As Long, outputRow As Long
    
    Set wsI = ThisWorkbook.Sheets("InputSheet")
    Set wsO = ThisWorkbook.Sheets("OutputSheet")
    inputArr = wsI.Range("Refactor").Value ' 将区域数据加载到内存数组
    
    ' 初始化输出数组(行数和输入一致,列数匹配)
    ReDim outputArr(1 To UBound(inputArr), 1 To UBound(inputArr, 2))
    outputRow = 0
    
    ' 遍历数组,筛选首列非空的行
    For i = 1 To UBound(inputArr)
        If Trim(inputArr(i, 1)) <> "" Then
            outputRow = outputRow + 1
            ' 复制当前行的所有列数据
            For j = 1 To UBound(inputArr, 2)
                outputArr(outputRow, j) = inputArr(i, j)
            Next j
        End If
    Next i
    
    ' 将筛选后的数组写入目标区域
    If outputRow > 0 Then
        wsO.Range("E5").Resize(outputRow, UBound(outputArr, 2)).Value = outputArr
    End If
End Sub

说明

  • 全程在内存中处理数据,避免多次和工作表交互,速度更快;
  • 同样不会修改原工作表的任何内容;
  • 适合数据量较大的场景,逻辑清晰,扩展性强。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 20:55:14