萬能公式:
{=-LOOKUP(9^9,-MIDB(A2,MIN(FINDB(LEFT(ROW($1:$11)-2,1),A2&-1/19)),ROW($1:$100)))}
公式詳細拆解如下:
①LEFT(ROW(1:11)-2,1)
ROW(1:11)很好理解,返回第1行到第11行的行號,也就是11個字符組成的集合A{1,2,3…11},-2則變?yōu)?span id="geybsqlxm7mc" class="bjh-strong" style="font-size: 18px; font-weight: 700;">字符集B{-1,0,1,2…9}。再通過LEFT提取字符集B左側的第一個字符,生成字符集C{"-",0,1,2,…9},也就是符號和0-9這十個字符,所有數(shù)值,均由這11個字符構成。
綜上,該部分的功能就是構建阿拉伯數(shù)字全部字符,這些數(shù)字有助于我們鎖定位置,進而提取阿拉伯數(shù)值。
②FINDB(①,A2&-1/19)
FINDB是查找字符所在目標文本中的位置,它與FIND的差異是,它返回字節(jié)序號,即把漢字和中文符號視為2個字節(jié)。由此可知,A2單元格混合文本中,負號“-”出現(xiàn)的位置是5,而不是3。
該公式中使用了A2&-1/19是為了確保字符集C{"-",0,1,2,…9}的每一個字符均在FIND的查找文本中出現(xiàn),確保FIND的返回值不存在錯誤值。片段②返回字符集C{"-",0,1,2,…9}在A2&-1/19出現(xiàn)的位置,即序數(shù)集D{5,13,10,6,…}。
③MIN(②)
MIN(②)取②的結果序數(shù)集D{5,13,10,6,…}中的最小值,它就是目標數(shù)值在A2中的起始位置,即A2混合文本中,首次出現(xiàn)負號或阿拉伯數(shù)字的位置,即是目標提取數(shù)值的起始位置。這就是為什么要求目標數(shù)字的左側,不能有無關的阿拉伯數(shù)字或負號的原因。
④-MIDB(A2,③,ROW($1:$100))
這里使用MIDB,而不是MID,是為了對應FINDB,通過字節(jié)位置截取部分文本。ROW($1:$100)返回有序數(shù)組{1-100},作為MIDB函數(shù)的第三個參數(shù)——要提取的字節(jié)數(shù),即分別提取1-100個字符。學習更多技巧,請收藏關注部落窩教育excel圖文教程。
于是,MIDB函數(shù)的功能就是從③確定的起始位置開始,分別從A2單元格文本中截取長度為1-100個字節(jié)的100個不等長字符串E{"-","-2","-29","-299",…"-299.19"}。而-MIDB則是將不等長字符串執(zhí)行減法運算,使得非數(shù)值數(shù)據(jù)因無法運算而報錯為#VALUE!,進而將不等長字符串E轉化為純數(shù)字和錯誤值#VALUE!組成的新常量數(shù)組F{#VALUE!;2;29;299;299;299.1;299.19;…;299.19}
⑤-LOOKUP(9^9,④)
LOOKUP查詢有三個特性:
1.默認查詢區(qū)域是升序的,即越往后值越大。
2.返回值應小于且最接近于查詢值。
3.忽略查詢區(qū)域中的錯誤值。
由此,我們賦予查詢值一個極大數(shù)9^9,因為LOOKUP的特性1,所以查詢區(qū)域的最后一個非錯誤值為最大值,即該值為返回值。LOOKUP的這幾個特性,完美地做到了忽略錯誤值取最后一個有效值!
excel數(shù)據(jù)提取技巧:從混合文本中提取數(shù)字的萬能公式參見鏈接:https://baijiahao.baidu.com/s?id=1673718944633609997&wfr=spider&for=pc








暫無數(shù)據(jù)