【问题标题】:Copy only value and not formula只复制值而不是公式
【发布时间】:2014-07-03 07:38:35
【问题描述】:

我有一张名为 Sheet1 的工作表,其中包含通过公式处理的数据。我需要特定范围的数据,例如,将 A2 到 D63 复制到新工作表中,即 Sheet2 仅按值。

Sheet1 中的数据范围是动态的,即它每次都会改变,所以我需要那个宏来处理这个。

【问题讨论】:

  • 我为您添加了 VBA 标签,因为您在构建 MACRO 时需要帮助。但是您既然要寻求 VBA 帮助,就需要向我们展示您的尝试。

标签: excel vba


【解决方案1】:

试试

Worksheets("Sheet1").Range("D63").value = .Range("A2").End(xlDown).Offset(0, 41).value

我不是很擅长 VBA,所以请原谅任何错误

来源: http://www.mrexcel.com/forum/excel-questions/49124-visual-basic-applications-copy-paste-cell-value-only-not-formula.html

【讨论】:

  • 我的要求是范围是动态的。每次 sheet1 中的数据发生变化时,即行数发生变化。我无法对其进行硬编码。
【解决方案2】:

第一次时我有点偏离,在这里提供了一些更新的代码,希望看起来更像预期的那样。读回整个线程听起来不仅是数据,而且范围本身在这里可能是动态的。如果是这样,范围实际重塑的方式是否存在模式?

每次源数据更改时,以下代码都会向源范围添加 3 行 - 应写入“sheet1”工作表模块

Private Sub Worksheet_Change(ByVal Target As range)  
    Static r As range
    If r Is Nothing Then   
        Set r = Worksheets("Sheet1").range("A2:D63")  
        Else  
        Set r = Union(r, Worksheets("Sheet1").range(Cells(r.Row + r.Rows.Count, r.Column), _
        Cells(r.Row + r.Rows.Count + 2, r.Column + r.Columns.Count - 1)))    
    End If
    r.select
    If Not Application.Intersect(Target, r) Is Nothing Then  
        For Each Cell In Application.Intersect(Target, r)  
            Worksheets("Sheet2").Cells(Cell.Row, Cell.Column).Value = Cell.Value  
        Next Cell  
    End If 

结束子

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多