让隐藏的列''彻底消失'',公式不变的情况下只计算非隐藏的列的和

隐藏列,是我们经常使用的一项功能。但是大家有没有注意到一个问题,当我们把某一列隐藏了以后,在对某个区域的求和等操作时,隐藏的列仍然会参与计算。很多时候我们是不希望这样的,我们希望把某一列隐藏后,在汇总求和的时候就忽略该列的值,而没有必要更改求和公式的计算区域。我们还是以最常见的学生成绩的例子来讲解今天的内容。

以上成绩表,我们希望实现的效果是,在不更改G列总分的公式的前提下,比如当我们将历史和计算机成绩列隐藏的时候,总分就变成了求语文和数学列,如果我们取消隐藏,又会变成求所有列。效果如下:相信很多小伙伴看到这个要求,脑子中肯定会蹦出一个想法,我们能够用某个函数判断一列某一列是否被隐藏,然后返回一个值,然后在使用条件求和函数sumif不是就能实现这个功能了嘛。思路完全正确。那用什么函数可以实现呢?

一、神奇的cell函数

Cell是是EXCEL中的信息函数,返回有关单元格的格式、位置或内容的信息。

语法:=cell(Info_type,reference)

参数解释:

Info_type:为要返回的单元格信息类型,可以为如下参数。

reference:单元格引用。

请看下面的一个例子。

根据以上的介绍,我们可以使用cell中的width返回单元格的列宽,当该列被隐藏时,返回值为0。

二、sumif条件求和

语法:= SUMIF(range,criteria,sum_range)

参数解释:

Range:条件区域,用于条件判断的单元格区域。

Criteria:求和条件,由数字、逻辑表达式等组成的判定条件。

Sum_range:实际求和区域,需要求和的单元格、区域或引用。当省略该参数时,则条件区域就是实际求和区域。

三、案例实现

根据以上的介绍,我们需要将第二行设置为辅助行,用于返回列宽计算值,C2的公式为:

=CELL('width',C1)。

则总分列的计算公式为:

=SUMIF($C$2:$F$2,'>0',C3:F3)。

当设置完成后,大家就会发现一个问题,当我们对某个列进行了隐藏或者取消隐藏时,总分的计算结果并不会发生改变,这到底是是什么原因呢?这是因为CELL虽然函数为'易失性'函数,但'隐藏'或'取消隐藏'命令不会引起其重算,因此需要手动按【F9】键或用其他方式刷新计算结果。

为了解决某些强迫症朋友的问题,我们可以使用VBA代码实现让某列隐藏后取消隐藏后自动进行计算。在本工作表中添加代码如下:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Calculate

End Sub

为了美观,我们可以将第二行的辅助行删除。

(0)

相关推荐