我需要以下要求的代码,其中以下代码不起作用:
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列。
答案 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
这确实符合您的要求:
您不能在整个范围的范围内使用方程式。另外,从您的描述来看,我认为您的方程式必须相反。