01 數(shù)字與漢字 ◆ 數(shù)字與漢字之間有分隔符 ◆ 【Ctrl E】&分列的方法,,比較簡(jiǎn)單,看下圖即可,。 除此外,,還可用 find 函數(shù)查找分隔符。 在 C2 單元格輸入公式,,下拉填充即可。 =LEFT(B2,FIND('-',B2)-1) 公式解析:利用 find 函數(shù)找到分隔符位置,,之后用 left 函數(shù)從左邊開始來提取數(shù)字,。 ◆ 數(shù)字與漢字之間沒有分隔符 ◆ ? 數(shù)字在漢字左側(cè)。 首先可用快捷鍵【Ctrl E】分列,。 另外,,還可借助 lenb+len 函數(shù),獲取位置信息,、來提取數(shù)字,。 如下圖,len 函數(shù)將英文看作 1 個(gè)字節(jié),,而 lenb 函數(shù)則將漢字作為了 2 個(gè)字節(jié),。 于是,我們?cè)?F2 單元格,,輸入下述公式,,下拉填充:
公式解析: LEN(E2)*2-LENB(E2) 為獲取左邊數(shù)字的個(gè)數(shù),搭配 left 函數(shù)以截取左邊的數(shù)字,。 ? 數(shù)字在漢字右側(cè),。 當(dāng)數(shù)字在漢字的右邊時(shí),,可用函數(shù) len+lenb+mid。 輸入公式: =MID(H2,LENB(H2)-LEN(H2)+1,99) 公式解析: LENB(H2)-LEN(H2)主要為獲得左邊文本的個(gè)數(shù),,加1 后即為首個(gè)數(shù)字出現(xiàn)的位數(shù),。 從首位置開始截取到 99 位(具體提取位數(shù)只要大于等于數(shù)字的最大位數(shù)就可以)。 ? 數(shù)字在漢字中間,。 利用 lookup 函數(shù)配合數(shù)組公式來做,。
公式解析: 利用 SEARCHB 函數(shù)的通配符查找,查找字符串的數(shù)字,。 因?yàn)楣綖閿?shù)組公式,,需按【Ctrl+Shift+Enter】進(jìn)行數(shù)組運(yùn)算。 02 數(shù)字與字母漢字混合 一旦涉及數(shù)字,、字母和漢字混合的情況,,就需要用復(fù)雜數(shù)組公式了。 數(shù)組公式需按 ◆ 提取字符串在左右側(cè)的連續(xù)數(shù)字 ◆ ? 數(shù)字在最右側(cè),。 =-LOOKUP(1,-RIGHT(O2,ROW($1:$15))) ? 數(shù)字在最左側(cè)。
公式解析: 首先用 right 函數(shù),,從右到左分別截取長(zhǎng)度為 1 到 15 的子字符串,,之后再利用取負(fù)運(yùn)算,將文本轉(zhuǎn)為錯(cuò)誤值,,將數(shù)值轉(zhuǎn)為負(fù)數(shù),; 之后利用 lookup 函數(shù)獲取數(shù)組的最后一個(gè)值,最后將負(fù)數(shù)取負(fù)轉(zhuǎn)為正數(shù),。 從左側(cè)提取數(shù)字的原理,,與從右側(cè)提取原理一樣。 ◆ 數(shù)字在任意位置 ◆ ? 借助 lookup 函數(shù),。 =-LOOKUP(0,-MID(K2,MIN(FIND(ROW($1:$10)-1,K2&1/17)),ROW($1:$15))) 公式解析: ? 利用 ROW 函數(shù)來構(gòu)造 0-9 的數(shù)字?jǐn)?shù)組: ROW($1:$10)-1 ? 「1/17」等于 0.0588235294117647,,它為一個(gè)包含 0-9 所有數(shù)字的值,連接在文本尾部是避免 FIND 函數(shù)在查找數(shù)字的時(shí)候,,因文本缺少相應(yīng)數(shù)字而出現(xiàn)返回錯(cuò)誤值,。 ? 使用 FIND 函數(shù)來查找 10 個(gè)數(shù)字在文本中的位置,用 MIN 函數(shù)來返回文本中出現(xiàn)數(shù)字的最小位置,,即可得到首數(shù)字的位置,。 ? 利用 MID 函數(shù)從首數(shù)字的位置開始,依次向右截取長(zhǎng)度為 1~15 的 15 個(gè)子字符串,再加上負(fù)號(hào),,將數(shù)字轉(zhuǎn)化為負(fù)數(shù),,將文本轉(zhuǎn)化為錯(cuò)誤值。 最后利用 LOOKUP 函數(shù)來返回最大的數(shù)字,,再使用負(fù)號(hào)把負(fù)數(shù)轉(zhuǎn)為正數(shù),。 ? 借助 max 函數(shù)(只能提取整數(shù))。
公式解析: ? 先使用 len 函數(shù)確定字符串里最長(zhǎng)的個(gè)數(shù),。 row(1:13)——13 ,,這個(gè)數(shù)只需要大于字符串中最長(zhǎng)的個(gè)數(shù)就可以,是為了后面一個(gè)個(gè)子字符的截取,。 ? LEFT(K20,ROW($1:$13) ——從首字符開始,,依次從右截取 1~13 個(gè)子字符串。 ? column(a:d)——a:d 取決于字符串中的數(shù)字最大位數(shù),。 ? RIGHT(LEFT(K20,ROW($1:$13)),COLUMN($A:$D)——從左開始向右依次截取 1~13 個(gè)子字符,,之后在此數(shù)組的基礎(chǔ)上,從右開始依次向左截取 1~4 個(gè)子字符,,這時(shí)是一個(gè) 13*4 的數(shù)組,。 ? 公式前加--,為了將文本轉(zhuǎn)化為錯(cuò)誤值,。 ? 將錯(cuò)誤值再轉(zhuǎn)為 0,,從數(shù)組中選出最大值,可獲得最大數(shù)字,。 ·END· |
|