大家还记得大明湖畔的(划掉)我曾讲解过的 O365 函数 filter 吗?不得不说 O365 版本真是 Excel 升级迭代的一大进步,不仅新增了不少能解决痛点问题的函数,还实现了动态数组区域引用。
所以,本来 PQ 擅长,而公式比较麻烦的案例,现在用公式也可以信手拈来了。
案例:
将下图 1 转换成下图 2 的样式。
解决方案:
1. 将 A 列复制到 O 列 --> 在 P2 单元格中输入以下公式 --> 下拉复制公式:
=FILTER($B$1:$M$1,B2:M2,"")
公式释义:
filter 函数的作用是根据自定义的条件筛选出数据区域;
语法为 FILTER(array,include,[if_empty]):
array:要筛选的数组或区域;
include:布尔值数组,高度或宽度必须与 array 相同;因为本例中的值区域本身就是 1 或空,已经符合布尔值的要求,所以直接引用即可,不需要再设置公式;
[if_empty]:可选;include 参数中的所有值都为空时返回的值
这个公式在此案例中的作用是:
如果 B2:M2 区域中的值为 1,则在区域 $B$1:$M$1 中筛选出对应的单元格,如果一个 1 都没有则返回空值;
参数中的第一个区域必须绝对引用,而第二个区域要相对引用
2. 给筛选出来的值区域加上边框 --> 将 P1 单元格设置为“月份”标题,用格式刷复制标题格式
3. 选中 P1:S1 区域 --> 按 Ctrl+1
4. 在弹出的对话框中选择“对齐”选项卡 --> 在“水平居中”的下拉菜单中选择“跨列居中”--> 点击“确定”
这样做的好处是不用合并单元格,也能起到合并居中的效果。
5. 给整个标题区域设置填充色。