首页 > 解决方案 > 使用 vba 插入公式的结果

问题描述

我想在 P 列的一系列单元格中插入一个公式。之后我希望公式的结果是一个硬值(所以不是公式,而是结果)。目前我将公式放在单元格中,然后自动填充到最后一行,然后复制列和过去的特殊。我想避免使用选择-复制-粘贴。我想知道是否有人知道如何做到这一点,我以前看过但找不到了。

我现在使用的代码

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

标签: excelvba

解决方案


您应该能够将整个 select-copy-paste 块替换为:

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

我正在正确阅读问题,这也应该有效:

frCP.value = frCP.value

推荐阅读