Vba 动态复制和特殊粘贴
我下载了一份报告,它总是出现在a列:啊,我也总是需要通过特殊的粘贴>乘以1来重新格式化它,以使用公式。它可以在500到25000行之间变化 我可以在单元格D1中手动输入“1” 在另一篇文章中,我有以下复制和粘贴的代码 当我将数据粘贴到Sheet2中时,我希望它是特殊粘贴乘以1Vba 动态复制和特殊粘贴,vba,excel,copy-paste,Vba,Excel,Copy Paste,我下载了一份报告,它总是出现在a列:啊,我也总是需要通过特殊的粘贴>乘以1来重新格式化它,以使用公式。它可以在500到25000行之间变化 我可以在单元格D1中手动输入“1” 在另一篇文章中,我有以下复制和粘贴的代码 当我将数据粘贴到Sheet2中时,我希望它是特殊粘贴乘以1 Sub DynaCopyPaste() Application.ScreenUpdating = False Dim s1, s2 As Excel.Worksheet Dim iLastCellS2 As Excel
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中的函数
目前有效的方法:
我的目标是构建一个分析包来处理数据,我在代码中的第一步是格式化它,以便我可以在页面上编写函数 我想你不需要复制或粘贴任何东西就可以做到这一点
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
“乘以1”是什么意思?即使假设你在粘贴数字,将它们乘以1又能做什么呢?根据恒等式定律,n*1=n。“乘以1”背后的意图是什么?仅仅通过粘贴值来实现。考虑提供一些示例输入数据,以及预期输出作为帮助他人帮助的一部分。注意,如果您声明“代码> DIME S1,s2作为Excel。工作表仅
s2
为Excel类型。工作表
但s1
为变量
类型。您需要为每个变量声明一个类型:Dim s1为Excel.Worksheet,s2为Excel.Worksheet
听起来您的文本看起来像数字。不能一步粘贴值,也不能粘贴乘以1。它必须是两个步骤,因为剪贴板将在其中一个步骤中包含有问题的值,在另一个步骤中包含值1。这就是说,宏记录器应该给你你需要的大部分。很漂亮,谢谢你。它在顶部的空白单元格中填充了一些0,我尝试将SkipBlanks设置为True。小问题,我可以在5秒内手动删除。