David要将小计(功能区的“数据”选项卡,在“大纲”组中)添加到大型工作表,并寻找一种将小计单元格移动到不同单元格的方法。例如,假设当Excel添加自动小计时,它们被添加到S列中,并且Excel添加的SUBTOTAL公式引用了S列中的单元格范围。David想要将SUBTOTAL公式(仅那些公式)移出

|在S列到S列之间具有相同的公式。

一种选择是遍历并将SUBTOTAL公式一次移动到所需位置。 (您将使用Ctrl + X和Ctrl + V来移动单元格,而不是使用Ctrl + C和Ctrl + V来仅创建单元格的副本。)如果工作表很大,有很多小计,这可能会变得非常乏味,很快。

Excel中的Tedium通常是创建宏的主要动力。这种情况也不例外。可以创建一个宏来进行SUBTOTAL公式的实际移动。请考虑以下示例:

Sub MoveSubtotals()

Dim rCell As Range     Dim rng As Range     Dim iCol As Integer     Dim iOffset As Integer

iCol = 19  '19 is Column S     iOffset = 1 'Positives go right, negatives go left     Set rng = Intersect(Selection.CurrentRegion, Columns(iCol))

For Each rCell In rng         If InStr(rCell.Formula, "SUBTOTAL") Then             rCell.Offset(0, iOffset).Formula = _                 rCell.Formula             rCell.ClearContents         End If     Next End Sub

本示例通过检查在S列中选择的每个单元格来工作。如果该单元格中的公式包含单词SUBTOTAL,则将该公式复制到T列右侧的一列中,并从S列的单元格中删除。只需更改分配给iOffset变量的值,小计将向左或向右移动的距离。

注意:

如果您想知道如何使用此页面(或_ExcelTips_网站上的任何其他页面)中描述的宏,我准备了一个特殊页面,其中包含有用的信息。

_ExcelTips_是您进行经济高效的Microsoft Excel培训的来源。

本技巧(8643)适用于Microsoft Excel 2007、2010、2013、2016、2019和Office 365中的Excel。您可以在此处找到适用于Excel的较旧菜单界面的本技巧的版本: