获取具有公式的列,并仅将值获取到新列

时间:2017-08-03 05:41:05

标签: excel vba excel-vba

enter image description here我想要的结果是在C列有一个单独的列,它只有值。

在列“I”中,我有一系列公式中的数据。我可以将特殊的复制和粘贴到C的新列,它只给出了值。

但有更好的方法吗?当我在新列C中读取数据时,这会给出粘贴数据的范围,这些数据很乱,意味着有很多空格。

谢谢:)

Sub Macro2()
'
' Macro2 Macro
'

Sheets("Sheet1").Columns(9).Copy

Sheets("Sheet1").Columns(3).PasteSpecial xlPasteValues

End Sub

2 个答案:

答案 0 :(得分:0)

请测试。
S1:选择工作表包含要复制的数据
S2:运行宏

   Sub macro1()
    Dim data As Variant
    data = ActiveSheet.Columns(9)

    ActiveSheet.Columns(3) = data
End Sub

如果您的所有数据都是数字,则只需将force转换为数字

Sub macro1()
        Dim data As Variant
        data = ActiveSheet.Columns(9)
        Dim i As Long
        For i = LBound(data) To UBound(data)

        If Len(data(i, 1)) > 0 Then
        data(i, 1) = CLng(data(i, 1))
        End If
        Next i


        ActiveSheet.Columns(3) = data
    End Sub

编辑,因为您要复制整个列 p / s:这不是优化解决方案,因为它读取整列(1048576行)

答案 1 :(得分:0)

如果您对仅复制值感兴趣,可以这样做:

第1步:确定专栏I中的最后一行:lastRow = Cells(1, 9).End(xlDown).Row

第2步:将所有值复制到列C

For i = 1 To lastRow
    Cells(i, 3).Value = Cells(i, 9).Value
Next i

将所有内容放在一起,宏是:

Sub CopyPaste()
Dim lastRow, i As Long
lastRow = Cells(1, 9).End(xlDown).Row
'alternatively specify explicitly amount of rows you want to copy, i.e.:
'lastRow = 25
For i = 1 To lastRow
    Cells(i, 3).Value = Cells(i, 9).Value
Next i
End Sub