有時需要在Excel中進行篩選后將公式結果轉換為值。通常將公式結果轉換為值用選擇性粘貼的方法,但該方法無法用于篩選后的結果:如果復制篩選后的區域直在原區域接選擇性粘貼,Excel會提示復制區域與粘貼區域形狀不同而無法粘貼;如果先選定可見區域(如用快捷鍵“Alt+;”)后再進行復制粘貼,Excel會提示“不能對多重選定區域使用此命令”。這時可用下面的VBA代碼將篩選后的公式批量轉換為值。
Sub ConvAfterFilter()
On Error Resume Next
Application.ScreenUpdating = False
Dim Rng As Range
For Each Rng In ActiveSheet.AutoFilter.Range.SpecialCells(xlCellTypeVisible)
If Rng.HasFormula Then
Rng.Copy
Rng.PasteSpecial xlValues
End If
Next
Application.CutCopyMode = False
Application.ScreenUpdating = True
End Sub
按Alt+F11,打開VBA編輯器,在代碼窗口中粘貼上述代碼并運行即可。該代碼僅將篩選結果中所有的公式結果轉換為值,而不會受影響到篩選結果中未包含(隱藏)的單元格區域。