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

如何在VB中复制含公式列的值到另一列(仅保留值)

单列值复制(仅保留值、去除公式)的VBA解决方案

如果你只需要处理单列,不用逐行循环,直接对整列范围操作更高效,下面提供两种实用方案:

方法1:复制粘贴法(直观易读)

这种方法和手动复制粘贴值的逻辑一致,适合新手理解:

Sub CopyColumnValuesOnly()
    Dim sourceCol As Range
    Dim targetCol As Range
    
    ' 定义源列:Invoice表的B列,从第2行到最后一行有数据的行
    Set sourceCol = Sheets("Invoice").Range("B2:B" & Sheets("Invoice").Range("B" & Rows.Count).End(xlUp).Row)
    ' 定义目标列:Data表的C列,从第2行开始粘贴
    Set targetCol = Sheets("Data").Range("C2")
    
    ' 复制源列并仅粘贴值
    sourceCol.Copy
    targetCol.PasteSpecial Paste:=xlValues
    
    ' 清除剪贴板,避免后续操作受影响
    Application.CutCopyMode = False
End Sub

方法2:直接赋值法(高效快速)

跳过剪贴板直接赋值,处理大数据量时速度更快:

Sub CopyColumnValuesDirectly()
    Dim sourceCol As Range
    Dim lastRowSource As Long
    Dim targetStartRow As Long
    
    ' 获取源列最后一行的行号
    lastRowSource = Sheets("Invoice").Range("B" & Rows.Count).End(xlUp).Row
    ' 定义源列范围
    Set sourceCol = Sheets("Invoice").Range("B2:B" & lastRowSource)
    
    ' 目标列起始行(这里用Data表C列的下一个空行)
    targetStartRow = Sheets("Data").Range("C" & Rows.Count).End(xlUp).Row + 1
    
    ' 直接将源列的值赋值给目标列对应的范围
    Sheets("Data").Range("C" & targetStartRow & ":C" & targetStartRow + sourceCol.Rows.Count - 1).Value = sourceCol.Value
End Sub

使用说明

  • 根据实际需求修改代码中的工作表名称(比如Sheets("Invoice")、Sheets("Data"))和列标识(比如B列、C列)
  • 如果需要从第1行开始处理,把代码中的B2改成B1,C2改成C1即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 07:42:45