核心内容摘要
从编译到运行:Docker跨架构调试不可绕过的3层ABI鸿沟(内核模块、libc版本、FPU寄存器对齐)
LOOKUP函数主要用于在查找范围中查询指定的查找值并返回另一个范围中对应位置的值。
她有两个特点
要求查询区域必须升序进行排序。
如果没有经过排序LOOKUP函数也会认为排在数据区域最后的内容是该区域中最大的。
当查找不到具体的查询值时会以比查询值小、并且最接近查询值的内容进行匹配。
另外还能识别查询值的格式再以相同格式的内容进行匹配。
近似查询如下图要根据B列销售业绩返回对应的评定标准E~F列为标准对照表。
C2单元格公式为LOOKUP(B2,E:F)使用这种方法对照表的首列必须是升序处理。
以C2单元格公式为例LOOKUP函数以44500为查找值由于在E列找不到对应的内容因此以小于44500的10000进行匹配并返回第二列中对应的值。
填充合并单元格如下图所示B列姓名使用了合并单元格使用以下公式可以得到完整的姓名列表LOOKUP(做,B$2:B
做是一个编码较大的字符也有小伙伴习惯使用字符“々”由于在B$2:B2这个区域中找不到做因此要返回小于做的最接近的一个同时默认查询区域为升序因此返回B$2:B2区域中的最后一个文本。
本例中的第2参数使用了动态扩展仅锁定起始单元格的地址当公式下拉时LOOKUP函数的查询区域不断扩大。
相当于是从B2开始到公式所在行这个区域内查找最后一个文本。
返回最后一个非空单元格的内容LOOKUP(1,0/(A:A),A:A)这个公式是LOOKUP函数的典型用法。
可以归纳为LOOKUP(1,0/(条件区域指定条件),目标区域或数组)公式中的0/(条件区域指定条件)部分先使用等式对比条件是否符合如果符合就返回逻辑值TRUE否则返回FALSE。
最终得到一个内存数组结果。
再使用0除以这个内存数组0除以TRUE结果是00除以FALSE结果是错误值。
接下来使用1作为查询值在内存数组中进行查找由于找不到1就用最后一个0进行匹配并返回第三参数中同一位置的元素。
如果是多个条件模式化的写法为LOOKUP(1,0/(条件
/(条件
/(条件N),目标区域或数组)
逆向查询如下图要根据E3单元格的商品名称查询对应的销售经理。
公式为LOOKUP(1,0/(E2C2:C
,B2:B
10)
多条件查询如下图要根据F3单元格的商品名称和G3单元格的部门查询对应的销售经理。
公式为LOOKUP(1,0/(E2B2:B
/(F2C2:C
,A2:A
10)
查询产品类别如下面这个图中所示A列是产品名称D列是类型对照表。
如果产品名称中包含对照表中的关键字就显示该内容。
B2单元格输入以下公式向下复制。
LOOKUP(1,-FIND(D$2:D$7,A
,D$2:D$
公式中的“FIND(D$2:D$7,A
”部分首先用FIND函数以D$2:D$7单元格中的类别关键字作为查询在A2单元格中分别查询这些字符出现的位置得到一个由错误值和数值组成的内存数组。
加上负号后内存数组中的数值变成负数错误值部分的结果不变。
接下来使用1作为查询值在内存数组中进行查找由于找不到具体的查找值同时LOOKUP认为数组中最后一个数值一定是所有数值中最大的因此以最后一个负数与之匹配并返回第三参数中同一位置的元素。
带合并单元格的查询如下图根据E2单元格的商品查询C列对应的销售经理。
F2单元格公式为LOOKUP(做,INDIRECT(C1:CMATCH(E2,B:B,)))MATCH函数部分精确查找出E2单元格的商品在B列中的位置。
返回结果为8。
用字符串C1:C连接MATCH函数的计算结果8变成新字符串C1:C8。
再用INDIRECT函数把字符串C1:C8变成实际的引用。
最后用LOOKU函数返回该区域中最后一个文本的内容。