Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 粘贴仅在整个范围内粘贴第一个单元格值_Excel_Vba - Fatal编程技术网

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