Pastespecial将列中的值粘贴到下一列,但难以使其工作。
如果我使用此代码,它可以正常工作
Sub cps()
Range("F2:F500").Copy
Range("G2:G500").PasteSpecial Paste:=xlPasteValues
End Sub
Snag是一张查看SQL的Excel工作表,因此行数发生了变化,今天有2100,明天可能有2110.所以我尝试了下面的工作,以确保我抓住了所有的行.. < / p>
Sub cps()
Range("F2:F5000").Copy
Range("G2:G5000").PasteSpecial Paste:=xlPasteValues ' <~~~~ Error
End Sub
但我在第Range("G2:G5000").PasteSpecial Paste:=xlPasteValues
行
如果我不知道表格中有多少行,我该怎么做?
所以托马斯给了我一个有效的解决方案,但我只需要调整代码来查看3张单独的表格,AP,EMEA和WH。
答案 0 :(得分:1)
您的代码运行正常。也许它是错误的,因为你没有从sheetmodule运行它而你没有限定你的Range。例如: 表格(“Sheet1”) .Range 或 ActiveSheet .Range 就像我在下面做的那样。此代码也只会像您要求的那样复制使用的范围。
编辑:添加内容以从任何工作表中调用
创建一个新模块并将其移入其中:
Public Sub CopyCOlumnF(strSheet As String)
Dim LastRow As Long
With Sheets(strSheet)
LastRow = .Cells(.Rows.Count, 6).End(xlUp).Row ' Column "F"=6
.Range("F1:F" & LastRow).Copy
.Range("G1:G" & LastRow).PasteSpecial Paste:=xlPasteValues
End With
End Sub
然后在任何一个sheetmodule中,像这样调用sub:
Sub cps()
CopyCOlumnF (ActiveSheet.Name)
End Sub
你也可以从任何地方调用它并将技巧应用到这样的任何表格:
CopyCOlumnF ("Sheet1")
CopyCOlumnF ("Sheet2")