Excel 使用过程中,不知道你有没有用到过 $
,如果从来都没有用到过,可能代表你的修为还不够深,来看看为什么这么说。
场景1. 分类占比统计
假设有如下表格:
问题类型 | 问题个数 |
---|---|
弱覆盖 | 37 |
过覆盖 | 29 |
重叠覆盖 | 47 |
模三干扰 | 63 |
外部干扰 | 67 |
现在要统计每项问题的占比,你打算怎么写公式?
① 添加辅助列总计
,然后占比=B2/C2
这样好像每次都需要手动计算问题总计的结果,然后修改辅助列的值,不够智能;
② 总计用sum函数不用手工计算结果?
占比=B2/SUM(B2:B6)
外部干扰占比居然是100%,结果有问题占比,看看下边的公式,变成了这样
占比=B3/SUM(B3:B7)
占比=B4/SUM(B4:B8)
占比=B5/SUM(B5:B9)
占比=B6/SUM(B6:B10)
这可咋办呢?
③ $
闪亮登场
先看公式
占比=B2/SUM(B$2:B$10)
再看结果
哇,结果好像跟方法 ① 计算结果相同。
原理:B$2:B$10
将求和范围锁定为下图范围
场景2. 多列VLOOKUP
假设现在要将每个班的成绩汇总到年级花名册,每个班上报的成绩中,学生编号是没有顺序的,而年级花名册中学生编号是从小到大排列的,此时你可能需要用到VLOOKUP函数。
① 笨方法,老老实实针对每一列写不同的公式,写三次
语文=VLOOKUP(B2,Sheet3!A:B,2,0)
数学=VLOOKUP(B2,Sheet3!A:C,3,0)
英语=VLOOKUP(B2,Sheet3!A:D,4,0)
结果是没问题,但是要写三次,如果要关联的列比较多的话就比较麻烦了。
② $
闪亮登场
先用下边公式
语文=VLOOKUP($B2,Sheet3!$A:B,2,0)
分别向下拉,向右拉,得到下表
结果不对啊,三列全部是语文成绩,仔细看下公式
数学=VLOOKUP($B2,Sheet3!$A:C,2,0)
英语=VLOOKUP($B2,Sheet3!$A:C,2,0)
第三参数全部为2,所以都是语文成绩,将数学索引参数修改为3,英语索引参数修改为4即可得到正确结果
如上图,虽然得到了正确结果,但是也需要手动修改索引参数,列少时可以操作,列多时很容易出错,且和方法①相比,效率优势并不明显。
此时,COLUMN派上用场,这个函数可以获取列号。这里2、3、4正好是BCD列的列号,公式这么写
语文=VLOOKUP($B2,Sheet3!$A:B,COLUMN(B2),0)
分别向右向下拉,即可得到正确结果
原理:
$B2
锁定了B列,但是向下拉时没有锁定行,依次递增;$A:B
锁定了班级成绩表的学生编号列,向右拉时没有锁定右边界,依次递增;COLUMN(B2)=2
,向右拉时,依次变为3、4
场景3. 固定单元格
假设场景1的表格多了一行
问题类型 | 问题个数 |
---|---|
弱覆盖 | 37 |
过覆盖 | 29 |
重叠覆盖 | 47 |
模三干扰 | 63 |
外部干扰 | 67 |
总计 | 243 |
现在要添加每类问题占比
① 笨方法,每行写不同的公式
=B2/B7
=B3/B7
=B4/B7
=B5/B7
=B6/B7
=B7/B7
如上图,可以得到正确结果,但是效率太低了。
② 使用$
锁定行和列
将公式修改为=B2/$B$7
,然后向下拉,得到如下结果
本方法只书写一次公式,就得到了想要的结果,效率很赞。
总结
excel中每个单元对应一个编号,其中字母代表列号,数字代表行号,在行号或者列号前添加$
代表锁定行或者锁定列,在一些场景中可以起到事半功倍的效果,怎么样,你学到了吗?
更多精彩内容,请关注公众号了解。