Excel中的宝藏函数之CELL及一个神奇的应用
今天给大家介绍Excel中的一个宝藏函数:CELL,和这个函数的一个神奇的应用。
01
认识CELL函数
相信大部分同学都没有用过这个函数。没用过的原因很简单,好像没有什么场合是必须使用这个函数的。
其实,这个函数很有意思。
我们先来看一下这个函数的语法:
这个函数两个参数:
info_type
reference
这个函数在Excel中被归为信息函数,它是用来提供各种信息的。第一个参数info_type就是指示CELL函数返回哪种信息,第二个参数reference就是告诉CELL函数返回关于哪一个单元格的信息。
上图中那个列表,就是返回的信息类型。这些返回的信息类型,有的挺有意思。
比如,公式
=CELL("col",G5)
就是要求返回G5单元格的列号,结果就是7。
公式
=CELL("protect",G5)
就是要求返回G5单元格是否锁定的信息,如果锁定了,就返回1,否则,就返回0。
又比如这个信息类型“prefix”——前缀,根据单元格对齐方式返回不同的值:
又比如这个信息类型,"color",你一定以为是返回单元格的颜色,其实不然,它判断的是单元格是否设置了负数的颜色(参见自定义格式:你想怎么显示你的数字?Excel数字基于条件的自定义格式),如果是,就返回1,否则返回0。
还有这个“width”类型,返回的是个数组:
如果在单元格A1中输入公式:
=CELL("width",G5)
返回值是一个数字,这个数字表示G5单元格可以输入缺省状况下多少个字符。比如,我的缺省字体是微软雅黑,字号为9,返回值就是8
我们说了,这个返回值是一个数组,刚才说的实际上是第一个返回值。你可以用下面的公式取到这个返回值:
=INDEX(CELL("width",G5),1)
而使用公式:
=INDEX(CELL("width",G5),2)
可以取得这个函数的第二个返回值。这个值表示的是这个单元格的宽度是缺省的还是被手动设置了。如果是缺省宽度,返回TRUE,否则,返回FALSE。
其他的信息类型我就不一一列举了。大家有兴趣可以自己研究一下,挺有意思的。
但是,有什么用?
你很难一下子就想到有什么用处,就好像我们以前讲过的MOD函数一样,看上去没有用,但是实际上可以在很多地方发挥作用。有很多时候,我们需要进行一些“高级”的效果,经常需要根据单元格的某些属性进行操作,这个函数就可以发挥作用了。比如,根据INDEX和MATCH得到某个单元格后,我们通过公式创建一个到该单元格的超链接。
下面我就为大家介绍一个神奇的应用。首先来看看这个函数的神奇之处。
02
CELL函数的神奇之处
这个函数本身就够神的,更神奇的是,它可以使你与Excel交互!
你可能注意到了,这个函数的第二个参数是一个可选参数:
也就是说,你可以直接写一个公式:
=CELL("col")
那么它返回哪个单元格的列号呢?答案是当前选中单元格的列号。鼠标点击哪个单元格,就返回哪个单元格的列号。
很神奇吧!
这意味着我们可以跟Excel的公式进行交互,其他的Excel函数做不到这一点。
我们可以利用这个特性实现一个神奇的应用
03
我们可以利用这个特性实现聚光灯效果。
假设我们有一个表格,
当表格比较大时,往往不容易直接看出当前选中的单元格是第几行,第几列,列标题是什么等等信息,简单说,眼睛容易花。在WPS中直接就有这样的聚光灯的功能,有些插件也做了这个功能。实际上,利用CELL函数就可以实现这个功能。
选中这个表格区域,在开始选项卡中,点击条件格式,点击新建规则:
然后在对话框中进行如下设置:
格式设置为填充浅灰色
这里的公式是
=OR(CELL("col")=COLUMN(),CELL("row")=ROW())
用OR连接了两个公式,分别是:
CELL("col")=COLUMN()
和
CELL("row")=ROW()
第一个公式中CELL("col")返回当前点击的是哪一列,COLUMN()返回当前应用条件格式的是那一列,如果当前点击的就是当前应用条件格式的列,就返回TRUE。
同样,第二个公式就是判断当前点击的行是否是应用条件格式的行。
用OR连接起来,就是如果当前应用条件格式的区域中包含点击的行或列,那个对应的行或列就填充为浅灰色。
效果如下:
这个做法美中不足的是每次点击都需要按F9。我们可以通过添加一行VBA代码来解决这个问题。
在Excel中,按Alt+F11,打开VBA编辑器,在左边的窗口中双击选择这个数据区域所在的工作表:
在右边的“通用”下拉框中,选择Worksheet:
在右侧的下拉列表中,选择SelectionChange:
在代码区域,输入一行代码:
Sheet1.Calculate
现在,每次点击鼠标,不需要按F9了
注:这里这个代码实际上是为单元格的选择改变事件添加了一句代码,实现了按F9的效果。具体关于什么是事件,以及VBA的内容,请看相应的视频课程。
END