Вставьте результат формулы, используя VBA - PullRequest
1 голос
/ 11 марта 2020

Я хочу вставить формулу в диапазон ячеек в столбце P. После этого я хочу, чтобы результат формулы был точным (поэтому не формула, а результат). На данный момент я помещаю формулу в ячейки, затем автоматически заполняю последнюю строку, а затем копирую столбец и пропускаю спец. Я хочу избежать использования select - copy - paste. Мне было интересно, если кто-нибудь знает, как это сделать, я видел это раньше, но не могу найти это больше.

Код, который я сейчас использую

Set frCP = Worksheets("Compliance").Range("P" & FirstRowFill & ":P" & LastRowMatchC)


With Worksheets("Compliance")
    .Range("P" & FirstRow).Offset(1).FormulaArray = "=IF(IFERROR(INDEX(Input!$A$2:A$" & LastRowInput & ",MATCH(1,SEARCH(TRANSPOSE(Input!$A$2:A$" & LastRowInput & "),O" & FirstRowOffset1 & "),0),0),W" & FirstRowOffset1 & ")=0,""ZZ"",IFERROR(INDEX(Input!$A$2:A$" & LastRowInput & ",MATCH(1,SEARCH(TRANSPOSE(Input!$A$2:A$" & LastRowInput & "),O" & FirstRowOffset1 & "),0),0),W" & FirstRowOffset1 & "))"
    .Range("P" & FirstRow).Offset(1).AutoFill Destination:=frCP
End With

Columns("P:P").Select
Range("P88").Activate
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False

With Worksheets("Compliance")
    .Range("A" & FirstRow).Rows(ActiveCell.Row).AutoFilter
    .AutoFilter.Sort.SortFields.Clear
    .AutoFilter.Sort.SortFields.Add2 Key:= _
    .Range("P" & FirstRow), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
        xlSortNormal
End With
    With ActiveWorkbook.Worksheets("Compliance").AutoFilter.Sort
    .Header = xlYes
    .MatchCase = False
    .Orientation = xlTopToBottom
    .SortMethod = xlPinYin
    .Apply
End With

1 Ответ

2 голосов
/ 11 марта 2020

Вы должны иметь возможность заменить весь блок select-copy-paste на:

columns("P:P").value = columns("P:P").value

Я правильно читаю вопрос, это также должно работать:

frCP.value = frCP.value
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...