需求:将 A 列的内容排除数字 3 后进行升序排序。
使用 FILTER 函数筛选内容,设置条件不等于 3,然后再使用 SORT 函数对 C 列的内容进行升序排序。
这种写法虽然可以实现需求,但是会占用多个单元格。
在 SORT 函数中的范围引用的是 C 列 FILTER 函数计算完的结果,也就是说 C2:C 的结果等于 FILTER 函数计算的结果。如果要将两个函数合并,只需要把 SORT 函数中的范围替换成 FILTER 函数。
函数合并后并不会影响输出的结果,反而让表格看起来更加简洁。
公式:=OFFSET(INDIRECT(ADDRESS(ROW(), COLUMN())), -1, -1)
通常情况下,看到一个多个函数嵌套成一个很长的公式的时候就会感到十分费解。如果对运算符优先级和所使用的函数作用不了解的话会很难理解这样的公式。
根据公式的计算顺序,先一层一层的找到最内层的函数。在 Google Excel 中有一个小技巧,当鼠标点击函数名的时候,当前被选择的函数包括函数内所有的参数都会被高亮,其它的函数将会变成阴影,这样有助于找到最内层的函数。
按照从函数从外到内的顺序排序如下:
因为 ROW 和 COLUMN 函数属于同级函数,默认按照从左到右的顺序计算,所以在这个公式中最优先计算的是 ROW 函数,获取当前行,返回值是 2,然后是 COLUMN 函数,获取当前列,返回值是 2。
外面一层的函数是 ADDRESS,将刚才的 ROW 函数和 COLUMN 函数的结果进行计算,也就是 ADDRESS(2, 2),返回的结果是 $B$2。
再外面一层的函数是 INDIRECT,以字符串的结果引用单元格,也就是引用刚才 ADDRESS 计算出来的结果 $B$2,等于 INDIRECT("$B$2"),返回引用 $B$2 单元格。
最外面一层的函数是 OFFSET,将 INDIRECT 函数的结果进行向左一个单元格再向上一个单元格进行偏移,等于 OFFSET($B$2, -1, -1)
计算思路顺序如下图:
使用 Excel公式格式化 工具,将一长段的公式进行格式化,可以更直观的根据缩进看到函数的分层。