VBA从一列粘贴到另一列?

时间:2018-10-03 10:56:41

标签: excel vba

我需要以下要求的代码,其中以下代码不起作用:

Sub sample48()
Worksheets("Sheet").Select
 Range("AG1").Select
    Range("A1:AQ1").Autofilter Field:=33, Criteria1:="COD*"
  Range("AG:AG").Value = Range("AM:AM").Value
End Sub

我需要在AG列中过滤一个名为**COD**的单词,然后仅将那些过滤后的订单项中的值从AG列复制并粘贴到AM列。

2 个答案:

答案 0 :(得分:0)

请注意,在excel中,您可以从过滤区域进行复制,但是在粘贴时,数据将不会粘贴在已过滤(可见)的单元格上,而是会连续粘贴。有两种方法可以完成您的任务:

1:使用循环

Sub MyCopyPaste()
    Dim RngCnt As Range
    Dim LastRow As Long
    LastRow = Range("AM" & Rows.Count).End(xlUp).Row
    For Each RngCnt In Range("AM1:AM" & LastRow).SpecialCells(xlCellTypeVisible)
        Range("AG" & RngCnt.Row).Value = Range("AM" & RngCnt.Row).Value
    Next
End Sub

2:无循环

在某些情况下,如果您不想使用loop或vba,则应创建另一列并将ID号放入其中。该列将用于对工作表进行排序,以将行顺序保留为原始顺序。然后创建另一个名称为custom_Order的列,过滤后,在其中添加数字,然后显示所有数据并根据custom_order对工作表进行排序,然后对其进行过滤。在这种情况下,所有预期的行都会被过滤并连续出现,您可以轻松地复制和粘贴。

答案 1 :(得分:0)

Sub sample48()

 Range("A1:AQ1").AutoFilter Field:=33, Criteria1:="COD*"
 Range("AG:AG").Copy
 Range("AM:AM").PasteSpecial

End Sub

这确实符合您的要求:

  • 过滤范围
  • 复制colmun AG(由于已过滤,因此仅复制了过滤后的值)
  • 将过滤后的值粘贴到AM中

您不能在整个范围的范围内使用方程式。另外,从您的描述来看,我认为您的方程式必须相反。