
在我前面的教程中,曾多次在函数中用到一个美元符号($),可能有些小伙伴还不知道它的用处是什么,或者并不知道它是怎么用的,这篇文章我来具体说说。
先看下面这个多条件求和的例子:

这里我们的目的是要统计语文、数学、英语这三个学科在不同性别的学生的成绩总和。图中已经写好的公式是正确的:
SUMIFS(E2:E6,C2:C6,J3)
但是这个公式只统计了一个结果,即所有男生的语文成绩总和,我们还有剩下的所有男生的数学成绩部和、所有男生的英语成绩总和、所有女生的语文成绩总和……
如果我们一个个地去手写对应的公式,自然是没问题的,但是效率太低了。而且本例中只有 6 个结果需要求出,实际工作中会有非常多的数据需要统计,一个个地手写显然并不现实。
我们知道,在 Excel 中是可以进行拖拽来填充公式的,我们先来向下填充,看能不能得到所有女生的语文成绩:

可以看到,结果是2,这个数值明显是不对的。正确的结果是 E2+E3,也就是4才对。
细心点看,向下拖拽填充之后的公式变成了这个:
SUMIFS(E3:E7,C3:C7,J4)
这个公式已经是错误的了。它的求和区域是 E3:E7,而我们实际上的求和区域(也就是语文成绩所在的区域)是 E2:E6。
同样可以看向右填充求所有男生的数学成绩的结果:

很明显,结果同样是不对的。再看看使用了锁定(即美元符号)之后的写法,拖拽的效果如何

可以看到,现在的结果都是对的。
再来对比一下前后的公式:
锁定前:SUMIFS(E2:E6,C2:C6,J3)
锁定后:SUMIFS(E$2:E$6,$C$2:$C$6,$J3)
美元符号$的作用是“锁定”。一个单元格是由列名+行号来标识的,所以这个$符号放在哪里的前面,就表示对其进行锁定。
在添加锁定后的公式里面,求和区域是 E$2:E$6,所以是锁定了行,即固定求和区域限定在第2行和第6行之间。行固定之后,向上、向下拖拽公式的时候,这个求和区域就不会变。但是由于列没有锁定,所以向左、向右拖拽的时候列是会变的。这里为什么不锁定列呢,因为我们的结果的排序顺序和源数据的排序顺序是一致的,而且我们需要在向右拖拽的时候,求和区域也相应地向右移动,所以列不能锁定。
第二个参数是条件区域一,这里进行了全锁定,因为无论我们是向下拖拽还是向右拖拽的时候,我们需要进行匹配的条件区域都是不变的,所以要使用全固定。
第三个参数是匹配条件一,这里只锁定了列,但没有锁定行。锁定了列,在向右拖拽的时候,列不会变;行不锁定,所以我们在向下拖拽以统计女生的成绩的时候,它会自动变成 $J4,而 J4 就是统计女生成绩的公式时条件一的位置
看看拖拽后求女生数学成绩总和的公式:
SUMIFS(F$2:F$6,$C$2:$C$6,$J4)
可以看到,求和区域变到了 F 列,正是数学成绩所在列,而行没变。条件区域完全不变。条件一变成了 J4,正是条件一的位置。说明这时候可以自由地拖拽、填充以得到正确的结果了。
另外说一个小技巧,在公式中,每个参数刚写完的时候,按一下键盘上的 F4,就能自动把锁定符号给加上,重复按 F4 就可以在全锁定、列锁定、行锁定之间来回切换。如果公式已经写完了需要修改的时候,先用鼠标选中参数再按 F4,也有同样的效果。