=LOOKUP(1,0/(MID(A1,ROW(1:999),1)="\"),ROW(1:999)) 3q3q^^最主要是0/(MID(A1,ROW(1:999),1)="\") 这个地方不太懂ROW(1:999)应该是返回行号的函数,那么是不是应该是返回数组{1,2,3.999}那函数LOOKUP 查找的次序应该是从
来源:学生作业帮助网 编辑:作业帮 时间:2024/06/26 02:41:04
![=LOOKUP(1,0/(MID(A1,ROW(1:999),1)=](/uploads/image/z/1970217-9-7.jpg?t=%3DLOOKUP%281%2C0%2F%28MID%28A1%2CROW%281%3A999%29%2C1%29%3D%22%5C%22%29%2CROW%281%3A999%29%29+3q3q%5E%5E%E6%9C%80%E4%B8%BB%E8%A6%81%E6%98%AF0%2F%28MID%28A1%2CROW%281%3A999%29%2C1%29%3D%22%5C%22%29+%E8%BF%99%E4%B8%AA%E5%9C%B0%E6%96%B9%E4%B8%8D%E5%A4%AA%E6%87%82ROW%281%3A999%29%E5%BA%94%E8%AF%A5%E6%98%AF%E8%BF%94%E5%9B%9E%E8%A1%8C%E5%8F%B7%E7%9A%84%E5%87%BD%E6%95%B0%2C%E9%82%A3%E4%B9%88%E6%98%AF%E4%B8%8D%E6%98%AF%E5%BA%94%E8%AF%A5%E6%98%AF%E8%BF%94%E5%9B%9E%E6%95%B0%E7%BB%84%7B1%2C2%2C3.999%7D%E9%82%A3%E5%87%BD%E6%95%B0LOOKUP+%E6%9F%A5%E6%89%BE%E7%9A%84%E6%AC%A1%E5%BA%8F%E5%BA%94%E8%AF%A5%E6%98%AF%E4%BB%8E)
=LOOKUP(1,0/(MID(A1,ROW(1:999),1)="\"),ROW(1:999)) 3q3q^^最主要是0/(MID(A1,ROW(1:999),1)="\") 这个地方不太懂ROW(1:999)应该是返回行号的函数,那么是不是应该是返回数组{1,2,3.999}那函数LOOKUP 查找的次序应该是从
=LOOKUP(1,0/(MID(A1,ROW(1:999),1)="\"),ROW(1:999)) 3q3q^^
最主要是0/(MID(A1,ROW(1:999),1)="\") 这个地方不太懂
ROW(1:999)应该是返回行号的函数,那么是不是应该是返回数组{1,2,3.999}那函数LOOKUP 查找的次序应该是从A1的第一位开始,而不是最后一位开始,我主要是这个地方搞不清楚.
=LOOKUP(1,0/(MID(A1,ROW(1:999),1)="\"),ROW(1:999)) 3q3q^^最主要是0/(MID(A1,ROW(1:999),1)="\") 这个地方不太懂ROW(1:999)应该是返回行号的函数,那么是不是应该是返回数组{1,2,3.999}那函数LOOKUP 查找的次序应该是从
返回A1中,最后一个\的位置.
MID(A1,ROW(1:999),1)
对A1按位拆分,
MID(A1,ROW(1:999),1)="\" ,每一位与"\"比较,是"\"的为TRUE,不是的为FALSE.
在EXCEL中,TRUE为1,FALS为0,0除以1为0,除以0为错误值#DIV/0!.
用1去找,会找到最后一个0的位置,从而找到最后一个"\"的位置.
不错,ROW(1:999)返回的是{1,2,3.999},函数LOOKUP确实是从A1的第一位开始查找.
但你要注意,在LOOKUP开始查找前,还对数组进行了一些变形计算.即你不明白的0/(MID(A1,ROW(1:999),1)="\") 这部分.
假如A1是“第一串\第二串\第三串\第四串”,则MID(A1,ROW(1:999),1)会得到
{"第";"一";"串";"\";"第";"二";"串";"\";"第";"三";"串";"\";"第";"四";"串";"";……;""}
这个数组(超过实际字符串长度的部分以空返回).经过与“\”的比较,得到
{FALSE;FALSE;FALSE;TRUE;FALSE;FALSE;FALSE;TRUE;FALSE;FALSE;FALSE;TRUE;FALSE;FALSE;FALSE;……;FALSE}
即是“\”的为TRUE,不是的为FALSE.
然后用0去除以这个数组,得到
{#DIV/0!;#DIV/0!;#DIV/0!;0;#DIV/0!;#DIV/0!;#DIV/0!;0;#DIV/0!;#DIV/0!;#DIV/0!;0;#DIV/0!;#DIV/0!;#DIV/0!;……;#DIV/0!}
注意,此时,数组只剩下0和#DIV/0!这两种值了.
LOOKUP函数用1在这个数组找,自然是找不到的.
那么看看LOOKUP函数的说明.如果函数 LOOKUP 找不到 lookup_value,则查找 lookup_vector 中小于或等于 lookup_value 的最大数值.
针对本实例可翻译成如果函数 LOOKUP 找不到 1,则查找数组中小于或等于1的最大数值.因#DIV/0!是错误值,不参与计算,所以小于等于1的最大值是0.
这个函数还有一个特点,就是有几个值相同的,会返回最后一个.