Pastespecial вставка только первого значения ячейки во всем диапазоне - PullRequest
0 голосов
/ 30 января 2020

Я пытаюсь вставить результаты формулы из одного столбца в другой. Мне нужно выполнить это с помощью макроса без использования al oop, так как это замедляет работу инструмента из-за большого количества записей. Следующие методы не работают -

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

Ответы [ 2 ]

0 голосов
/ 04 февраля 2020

Спасибо за ввод. Я обнаружил, что метод расчета должен быть изменен на «Automati c» с «Manual»:

Application.Calculation = xlAutomati c

0 голосов
/ 30 января 2020

Копирование и вставка специальных значений диапазона

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...