一、提取摘要中的最大数值 I6=LOOKUP(10^10,--MID(E6,MIN(FIND({0,1,2,3,4,5,6,7,8,9},E6&"0123456789")),ROW(INDIRECT("1:"&LEN(E6))))) 函数说明 1、lookup 函数表达式=lookup(lookup_value,lookup_vector,result_vector) 用途:在某列里找近似值,返回结果列对应的值,如要找一个10的10次方(10^10),则是找出文本中第一个出现的连续数值 2、mid 函数表达式=mid(text,start_num,num_chars) 用途:从文本指定位置开始截取具体的字符数,mid得到的是文本结果,在之前加两个符号,是为了把文本格式的数字转为数值。 3、min 函数表达式=min(number1,number2,...) 用途:从多个数或者一个与区域里找出最小值。 4、find 函数表达式=find(find_text,within_text,start_num) 用途:从文本中,找一个或者若干个字符,并从指定位置开始找 5、row 函数表达式=row(reference) 用途:返回单元格所在的行,如果是多行,返回的是多行数值的数组 6、len 函数表达式=len(text) 用途:求文本的长度 7、indirect 函数表达式=indirect(ref_text,a1) 用途:根据参数文本返回单元格或者区域,如果 a1 为 TRUE 或省略,ref_text 被解释为 A1-样式的引用 如:=SUM(INDIRECT("f6"&":f14",1))计算得到的就是F6:F14之和 8、嵌套公式说明 MIN(FIND({0,1,2,3,4,5,6,7,8,9},E6&"0123456789")) 7 从文本中找0到9,返回第一个找到数值的位置。为了防止文本中无数值,所以在文本后加字符串0到9 ROW(INDIRECT("1:"&LEN(E6))) 得到的是:【1:14】 从第一个出现数字的位置往后截取,依次截取1位到最大位数(文本14位长,最多截取14位)。 得到的结果依次是: 0;03;030;0304;03048;030485;0304851;03048513 由于文本数值转成了数字,则分别是: 0;3;30;304;3048;30485;304851;3048513 从中得到的最大值是:3048513
二、补足8位发票号 J6=LEN(I6) 求得到的数值的长度 K6=REPT("0",8-J6) 1、rept 函数表达式=rept(text,number_times) 用途:重复文本指定次数。如果得到的数值只有6位则补两个0,如果数值是7位则补一个0 I6=K6&I6 将补足的0和数值组合起来。
三、组合公式 G6=REPT("0",8-LEN(I6))&LOOKUP(10^10,--MID(E6,MIN(FIND({0,1,2,3,4,5,6,7,8,9},E6&"0123456789")),ROW(INDIRECT("1:"&LEN(E6))))) 将分步设置的公式组合到一起。
注: I6的公式,适合在文本中找唯一数值。如果有多个数值,得到的是第一个数值,该公式可以单独使用。 |