动态复制和特殊粘贴
Dynamic Copy and Special Paste
我下载的报告总是出现在 A:AH 列中,我也总是需要通过特殊粘贴 > 乘以 1 来重新格式化它以使用公式。它可以在 500 到 25000 行之间变化。
我可以在单元格 D1 中手动输入“1”。
来自另一个 post,我有以下复制和粘贴的代码。
当我将数据粘贴到Sheet2时,我希望它是特殊粘贴乘以1。
Sub DynaCopyPaste()
Application.ScreenUpdating = False
Dim s1, s2 As Excel.Worksheet
Dim iLastCellS2 As Excel.Range
Dim iLastRowS1 As Long
Set s1 = Sheets("Sheet1")
Set s2 = Sheets("Sheet2")
'get last row
iLastRowS1 = s1.Cells(s1.Rows.Count, "AH").End(xlUp).Row
'get last available cell to paste
Set iLastCellS2 = s2.Cells(s2.Rows.Count, "A").End(xlUp).Offset(1, 0)
'copy and paste into Sheet2
s1.Range("A1", s1.Cells(iLastRowS1, "AH")).Copy
iLastCellS2.PasteSpecial xlPasteValues
Application.ScreenUpdating = True
我添加了问题的屏幕截图。我无法对数据应用 excel 函数 - 请参阅 G11 中的函数。
当前有效:
在空白单元格中键入“1”
将该单元格复制到剪贴板
Select全部数据
粘贴>特殊粘贴>乘以
我的目标是构建一个分析包来操作数据,我在代码中的第一步是格式化它,以便我可以在页面上编写函数。
我认为您可以在不实际复制或粘贴任何内容的情况下执行此操作。
Dim rngToCopy as Range
'copy and paste into Sheet2
Set rngToCopy = s1.Range("A1", s1.Cells(iLastRowS1, "AH"))
iLastCellS2.Resize(rngToCopy.Rows.Count, rngToCopy.Columns.Count).Value = rngToCopy.Value
如果这不起作用,那么我认为应该这样做:
Dim multiplier as Range
Set multiplier = s1.Range("D1") '## This is the cell containing your value of 1
Dim rngToCopy as Range, destRange as Range
'## put the values in s2 worksheet:
Set rngToCopy = s1.Range("A1", s1.Cells(iLastRowS1, "AH"))
Set destRange = iLastCellS2.Resize(rngToCopy.Rows.Count, rngToCopy.Columns.Count)
destRange.Value = rngToCopy.Value
multiplier.Copy
destRange.PasteSpecial Paste:=xlPasteValues, Operation:=xlMultiply, _
SkipBlanks:=False, Transpose:=False
我下载的报告总是出现在 A:AH 列中,我也总是需要通过特殊粘贴 > 乘以 1 来重新格式化它以使用公式。它可以在 500 到 25000 行之间变化。
我可以在单元格 D1 中手动输入“1”。
来自另一个 post,我有以下复制和粘贴的代码。
当我将数据粘贴到Sheet2时,我希望它是特殊粘贴乘以1。
Sub DynaCopyPaste()
Application.ScreenUpdating = False
Dim s1, s2 As Excel.Worksheet
Dim iLastCellS2 As Excel.Range
Dim iLastRowS1 As Long
Set s1 = Sheets("Sheet1")
Set s2 = Sheets("Sheet2")
'get last row
iLastRowS1 = s1.Cells(s1.Rows.Count, "AH").End(xlUp).Row
'get last available cell to paste
Set iLastCellS2 = s2.Cells(s2.Rows.Count, "A").End(xlUp).Offset(1, 0)
'copy and paste into Sheet2
s1.Range("A1", s1.Cells(iLastRowS1, "AH")).Copy
iLastCellS2.PasteSpecial xlPasteValues
Application.ScreenUpdating = True
我添加了问题的屏幕截图。我无法对数据应用 excel 函数 - 请参阅 G11 中的函数。
当前有效:
在空白单元格中键入“1”
将该单元格复制到剪贴板
Select全部数据
粘贴>特殊粘贴>乘以
我的目标是构建一个分析包来操作数据,我在代码中的第一步是格式化它,以便我可以在页面上编写函数。
我认为您可以在不实际复制或粘贴任何内容的情况下执行此操作。
Dim rngToCopy as Range
'copy and paste into Sheet2
Set rngToCopy = s1.Range("A1", s1.Cells(iLastRowS1, "AH"))
iLastCellS2.Resize(rngToCopy.Rows.Count, rngToCopy.Columns.Count).Value = rngToCopy.Value
如果这不起作用,那么我认为应该这样做:
Dim multiplier as Range
Set multiplier = s1.Range("D1") '## This is the cell containing your value of 1
Dim rngToCopy as Range, destRange as Range
'## put the values in s2 worksheet:
Set rngToCopy = s1.Range("A1", s1.Cells(iLastRowS1, "AH"))
Set destRange = iLastCellS2.Resize(rngToCopy.Rows.Count, rngToCopy.Columns.Count)
destRange.Value = rngToCopy.Value
multiplier.Copy
destRange.PasteSpecial Paste:=xlPasteValues, Operation:=xlMultiply, _
SkipBlanks:=False, Transpose:=False