Excel 粘贴仅在整个范围内粘贴第一个单元格值
我正在尝试将公式结果从一列粘贴到下一列。我需要在不使用循环的情况下通过宏执行此操作,因为它会由于大量记录而减慢工具的速度。以下方法不起作用-Excel 粘贴仅在整个范围内粘贴第一个单元格值,excel,vba,Excel,Vba,我正在尝试将公式结果从一列粘贴到下一列。我需要在不使用循环的情况下通过宏执行此操作,因为它会由于大量记录而减慢工具的速度。以下方法不起作用- a) range("G5:G10").value = range("H5:H10").value b) Selection.PasteSpecial paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Application.CutCop
a) range("G5:G10").value = range("H5:H10").value
b) Selection.PasteSpecial paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
问题是excel将第一个单元格(“G5”)的公式结果复制到目标(“H5:H10”)的所有单元格。源中的公式是数组公式。请大家分享一下如何解决这个问题
编辑:
Sub paste()
'
' paste Macro
'
'
Dim ColName As String, sheetname1 As String, lookup_col As String, lastrow_range As Long
ColName = "A"
sheetname1 = "Sheet1"
lookup_col = "C"
lastrow_range = 8
Worksheets("Sheet1").Range("F5").Select
ActiveCell.FormulaArray = _
"=IF(ISERROR(MATCH(TRUE,EXACT($" & ColName & ActiveCell.Row & "," & sheetname1 & "!$" & lookup_col & "$5:$" & lookup_col & "$" & lastrow_range & "),0)) , ""-" & ColName & """&"" is Invalid. This should match with any one of the values in column "" &""" & lookup_col & """&"" of "" & """ & sheetname1 & """&"". Please refer ""&""" & sheet_name & """ ,""It Matches"")"
Worksheets("Sheet1").Range("F5").Select
Selection.AutoFill Destination:=Range("F5:F8")
Range("F5:F8").Select
Selection.Copy
Range("G5").Select
Selection.PasteSpecial paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
End Sub
复制并粘贴范围的特殊值
Range("H5:H10").Copy
Range("G5:G10").PasteSpecial (xlPasteValues)
Application.CutCopyMode = False
复制粘贴范围
Range("H5:H10").Copy
Range("G5:G10").PasteSpecial (xlPasteAll)
Application.CutCopyMode = False
或者复制并粘贴整个列
Range("H:H").Copy
Range("G:G").PasteSpecial (xlPasteAll)
Application.CutCopyMode = False
谢谢你的意见。
我发现计算方法必须从“手动”更改为“自动”:
Application.Calculation=xlAutomatic
.value=.value
将永远不会复制公式。避免使用Selection.PasteSpecial
。使用要粘贴的完整地址。您的“选择”可能不是您认为的选择?类似于范围(“G5:G10”)。复制然后范围(“H5:H10”)。粘贴特殊…
我想你可以做范围(“G5:G10”)。公式=范围(“H5:H10”)。公式?@SiddharthRout-Siddharth,谢谢你的输入。我试图复制输入列公式的文本结果,即目标不应具有派生结果的公式。当我用“.copy”@TimWilliams-Tim复制公式时,它似乎起作用了,谢谢你的输入。我正在尝试只复制文本结果,以便目标列只包含文本值。奇怪的是,当我尝试从前端执行此操作时,它起作用了。当我将录制的宏从前端复制到vb时,它不起作用,只在整个列中粘贴第一个单元格的结果。然后range(“G5:G10”)。value=range(“H5:H10”)。value
应该起作用。确保您完全符合该范围的要求。例如ThisWorkbook.Sheets(“Sheet1”).Range(“G5:G10”).value=ThisWorkbook.Sheets(“Sheet1”).Range(“H5:H10”).value