为何可用的Excel LET公式会同时显示两个结构化表格?
LET函数中IF同时显示两个表格的原因解析
核心:数组式逐位置判断,而非整体二选一
这个公式里的myrows和mycols都是数组序列,不是单个数值,所以IF的判断是针对每个单元格位置单独进行的,不是整体返回整个x或y表格:
myrows是包含rows1+rows2个元素的纵向序列(比如table1有3行、table2有2行,myrows就是{1;2;3;4;5})mycols是包含table1列数的横向序列(比如3列就是{1,2,3})myrows<=rows1会生成和myrows维度一致的布尔数组(上述例子中就是{TRUE;TRUE;TRUE;FALSE;FALSE})
IF的逐位置返回逻辑
当IF的条件为数组时,会对每个位置执行判断:
- 前
rows1行的所有单元格位置,条件为TRUE,直接返回x对应行、列的单元格值(结构化表格会自动匹配对应位置) - 从
rows1+1行开始的位置,条件为FALSE,通过INDEX(y, myrows-rows1, mycols)提取y中对应行的内容(myrows-rows1会把第4、5行转换成y的第1、2行)
本质上,这个IF不是在“返回整个x表格”和“返回整个y表格”之间二选一,而是逐行逐列决定每个单元格该取x还是y里的对应值,最终拼接出一个包含x全部行+ y全部行的新结构化表格。
快速验证方法
可以拆分公式部分单独查看结果:
- 单独计算
myrows<=rows1,会得到一串对应每个行位置的布尔判断结果 - 单独计算
INDEX(y, myrows-rows1, mycols),会得到行数与myrows一致的数组(前rows1行是错误值,后rows2行是y的内容) - 套上IF后,前
rows1行的错误值会被替换成x的内容,最终得到完整的拼接表格
内容的提问来源于stack exchange,提问作者kordate
相关产品推荐
相关产品推荐

