这段excel函数怎么理解?
从里到外,解释如下:
column(a:j)返回的是A:J的列号,结果是数组{1,2,3,4,5,6,7,8,9,10}
right(a1,column(a:j))按步骤1数组内容1到10的长度分别返回A1从右侧开始截取的字符串,得到的还是一个包含10个字符串的数组。假设A1的内容是“本阿1234567”,那么返回结果如下:{"7","67","567","4567","34567","234567","1234567","阿1234567","本阿1234567","本阿1234567"}。这里,数组中每个值都是用双引号括起来的,表明这些值的类型都是文本字符串,而不是真正能直接用来运算的数字,尤其是最后3个值中还包含汉字等非数字。
--right() 外套个“--”符号是将第2步数组中的文本字符串强制转换成数字类型的数据,不是数字的返回错误值,得到结果如下:{7,67,567,4567,34567,234567,1234567,#VALUE!,#VALUE!,#VALUE!},这里最后3个都是错误值,因为步2的数组中最后3个值中包含非数字的内容
=lookup(9e+307,--right()),这里的9e+307是一个极大的数字,等于9*10^307,大约是EXCEL能接受的最大数值。lookup函数返回第3步数组中小于等于查找值的最大值(即:数组中的最大值),并且忽略#VALUE!等错误值。返回结果是1234567
由上可见,该函数的作用是分离单元格中的文本和数字,并提取出数字。
注意事项:
如果单元格中的数字最大长度超过10位,提取结果会出错,因column(a:j)返回的数组最大值只到10。比如提取11位的手机号就不行了。