|
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件 ★ 免费下载 ★ ★ 使用帮助★
我们知道合并的单元格拆分后,留下的空白单元格可以使用定位空值的方式来填充,今天看到使用lookup函数来填充的方式,觉得很有意思,顺便分析一下公式,具体图和公式如下:
公式:=LOOKUP(1,0/($A$2:A2<>""),A$2:A2)
在B2单元格的公式:=LOOKUP(1,0/($A$2:A2<>""),A$2:A2),按照“公式→公式求值”,可以一步一步查看运算的步骤,我这里把其分解的更细一点
1、=LOOKUP(1,0/("甲"<>""),A$2:A2) ,用A2单元格的数据“甲”替换单元格引用$A$2:A2
2、=LOOKUP(1,0/({TRUE}),A$2:A2) ,比较判断:"甲"<>"",二者不相等,返回逻辑值TRUE
3、=LOOKUP(1,0/(TRUE),A$2:A2) ,去掉花括号
4、=LOOKUP(1,0,A$2:A2) , 0/TRUE=0,因为TRUE被当做数字1来进行计算
5、=LOOKUP(1,0,{"甲"}) ,A$2:A2代表的值:{"甲"},注意花括号不能省略,这代表一个引用,而不是一个字符
6、结果:甲
这是因为lookup函数查找值时,如果找不到就用最接近的值来替代,现在查找1,查找范围是0,没有1,则最接近的就是0(这里只有0),然后返回0对应的值,那就是甲。
现在来分析空白单元格是怎么填充的,以B7为例,公式为:=LOOKUP(1,0/($A$2:A7<>""),A$2:A7)
1、=LOOKUP(1,0/({"甲";"";"";"乙","丙",""}<>""),A$2:A7) ,用A2:A7单元格的数据替换单元格引用$A$2:A7
2、=LOOKUP(1,0/({TRUE;FALSE;FALSE;TRUE;TRUE;FALSE}),A$2:A7) ,逐个用数组中的数据比较判断,返回逻辑值TRUE和FALSE集合
3、=LOOKUP(1,0/{TRUE;FALSE;FALSE;TRUE;TRUE;FALSE},A$2:A7) ,去掉花括号
4、=LOOKUP(1,{0;#DIV/0!;#DIV/0!;0;0;#DIV/0!},A$2:A7) , 0/TRUE=0,因为TRUE被当做数字1来进行计算,0/FALSE=#DIV/0!,因为FALSE作为0计算
5、=LOOKUP(1,{0;#DIV/0!;#DIV/0!;0;0;#DIV/0!},{"甲";"";"";"乙","丙",""})
6、结果:丙
同理,lookup函数查找值时,如果找不到就用最接近的值来替代,这里0最接近,若有多个相同的值,lookup以最后查找到的作为返回结果,也就是查找区域里最后一个0,就是上面第5步标红的0,其对应的返回值就是“丙”。
以此类推,lookup通过这一个方式把空白单元格填充了。
当然这是在辅助列中处理的,最后把原始列删除即可。
|
|