Excel 复制列并粘贴值(不是公式)

Excel 复制列并粘贴值(不是公式),excel,vba,spreadsheet,Excel,Vba,Spreadsheet,AlexP为一个关于复制列的问题提供了以下代码。它对我来说非常有用,只是在ws1中,列中的方程式被复制到ws2。我只想复制数值,而不是方程 Sub CopyHeaders() Dim header As Range, headers As Range Set headers = Worksheets("ws1").Range("A1:Z1") For Each header In headers If GetHeaderColumn(header.Val

AlexP为一个关于复制列的问题提供了以下代码。它对我来说非常有用,只是在ws1中,列中的方程式被复制到ws2。我只想复制数值,而不是方程

Sub CopyHeaders()
    Dim header As Range, headers As Range
    Set headers = Worksheets("ws1").Range("A1:Z1")

    For Each header In headers
        If GetHeaderColumn(header.Value) > 0 Then
            Range(header.Offset(1, 0), header.End(xlDown)).Copy Destination:=Worksheets("ws2").Cells(2, GetHeaderColumn(header.Value))
        End If
    Next
End Sub

Function GetHeaderColumn(header As String) As Integer
    Dim headers As Range
    Set headers = Worksheets("ws2").Range("A1:Z1")
    GetHeaderColumn = IIf(IsNumeric(Application.Match(header, headers, 0)), Application.Match(header, headers, 0), 0)
End Function

把这条线分开:

Range(header.Offset(1, 0), header.End(xlDown)).Copy Destination:=Worksheets("ws2").Cells(2, GetHeaderColumn(header.Value))
并改用
.PasteSpecial()
方法


e、 g

看看这个:
Range(header.Offset(1, 0), header.End(xlDown)).Copy
Worksheets("ws2").Cells(2, GetHeaderColumn(header.Value)).PasteSpecial(xlPasteValues)
Application.CutCopyMode = False