您的位置: 首页 > EXCEL技巧 > ExcelVBA >

用VBA将筛选后的公式批量转换为值

时间:2013-12-13 整理:docExcel.net

有时需要在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编辑器,在代码窗口中粘贴上述代码并运行即可。该代码仅将筛选结果中所有的公式结果转换为值,而不会受影响到筛选结果中未包含(隐藏)的单元格区域。

用VBA将筛选后的公式批量转换为值 问题:用VBA将筛选后的公式批量转换为值
回答:有时需要在Excel中进行筛选后将公式结果转换为值。通常将公式结果转换为值用选择性粘贴的方法,但该方法无法用于筛选后的结果:如果复制筛选后的区域直在原区域接选择性粘贴,Excel会提示复制区域与粘贴区域形状不同而...
数组公式获取自动筛选后第一行的行号 问题:数组公式获取自动筛选后第一行的行号
回答:在Excel中进行自动筛选后,筛选结果中第一行的行号是不确定的。在某些特定的筛选中(例如某列筛选内容都是相同的),要获取筛选后这列单元格的内容,就需要先取得筛选后第一行的行号。下面的数组公式可以实现这个目的...
Excel中筛选后的条件求和公式 问题:Excel中筛选后的条件求和公式
回答:有时需要在Excel表格中动态地反映筛选后数值的变化情况,如下图中F32单元格中的合计值会随着不同的筛选情况而变化。我们知道,用SUBTOTAL函数可以求出筛选后可见单元格的数值和或平均值等,因为SUBTOTAL函数会忽略不包括在筛...
快速输入筛选后的求和公式 问题:快速输入筛选后的求和公式
回答:有时需要在Excel中进行筛选后求和,让和值随着筛选内容的变化而变化。如图,假如要对A1:F23区域进行筛选,并对F列进行求和,可以在F24单元格中输入公式: =SUBTOTAL(9,F2:F23)  除了手工输入公式外,还可以使用下面更为快...
Word教程:把文档存为网页 问题:Word教程:把文档存为网页
回答:...夹。 3.选择生存范例为“网页”(或“单个文件网页、或筛选过的网页”)。 4.文件及文件夹显示区下方将显示原始的页标题,可单击后头的“变动标题”按钮,在“配置页标题”对话框中变动页标题。变动后单击“确定”按钮,...
让Excel筛选后的序号自动连续 问题:让Excel筛选后的序号自动连续
回答:如果Excel工作表包含序号列,在进行自动筛选后,由于某些行被隐藏,序号会变得不连续。要让筛选后的序号还是从“1”开始的连续数字,可以用下面的公式自动生成序号,假如第一行为标题行,序号在第一列,如图。 筛选...
相关推荐: