tft每日頭條

 > 生活

 > 數字快速算法口訣

數字快速算法口訣

生活 更新时间:2024-11-23 19:06:06

私信回複關鍵詞【福利】,獲取豐富辦公資源,助你高效辦公早下班!

大家好鴨,我是秋葉 Excel 學習班裡,沉迷于學習 Excel 的小爽~

最近啊,我有了一個小粉絲——遠歌同學(插會兒腰)。

某天我在玩電腦的時候,微信突然叮~ 了兩聲,仔細一看,原來是可愛滴遠歌:

數字快速算法口訣(8個必會的高效提取數字法)1

應遠歌的求助,今天我就來給大家簡單介紹一下——利用函數,快速提取單元格中的數字!

老規矩,練習文件放文末啦,記得看到最後領取~

01

數字與漢字

數字與漢字之間有分隔符 ◆

【Ctrl E】&分列的方法大家都很熟悉啦,這裡就不再贅述~

數字快速算法口訣(8個必會的高效提取數字法)2

這裡我們還可以使用 find 函數查找分隔符。

在 C2 單元格輸入公式如下,最後下拉填充就搞定啦。

=LEFT(B2,FIND("-",B2)-1)

數字快速算法口訣(8個必會的高效提取數字法)3

小解析:

利用 find 函數找到分隔符所在的位置,再用 left 函數從左邊開始提取數字。

數字與漢字之間沒有分隔符 ◆

❶ 數字在漢字左側。

和上文一樣,也可以用快捷鍵【Ctrl E】進行分列。

我們還可以借助 lenb len 函數,獲取位置信息、提取數字。

如下圖中,len 函數将英文作為 1 個字節,而 lenb 函數将漢字作為 2 個字節。

數字快速算法口訣(8個必會的高效提取數字法)4

因此,我們在 F2 單元格中輸入以下公式,下拉填充即可:

=LEFT(E2,LEN(E2)*2-LENB(E2))

數字快速算法口訣(8個必會的高效提取數字法)5

小解析:

LEN(E2)*2-LENB(E2) 就是獲取左邊數字的個數,搭配 left 函數截取左邊的數字。

數字在漢字右側。

當數字在漢字右邊時,我們可以用函數 len lenb mid。

輸入公式如下:

=MID(H2,LENB(H2)-LEN(H2) 1,99)

數字快速算法口訣(8個必會的高效提取數字法)6

小解析:

LENB(H2)-LEN(H2)主要是獲得左邊文本的個數,加上 1 後就是首個數字出現的位數。

從首個位置開始截取到 99 位(具體提取的位數隻要大于等于數字的最大位數即可)。

數字在漢字中間。

需要利用 lookup 函數配合數組公式來做。

公式如下:

=-LOOKUP(1,-MIDB(K2,SEARCHB("?",K2),ROW($1:$15)))

數字快速算法口訣(8個必會的高效提取數字法)7

小解析:

這裡是利用 SEARCHB 函數的通配符查找功能,查找字符串中的數字。

由于公式是一個數組公式,需要按【Ctrl+Shift+Enter】進行數組運算。

02

數字與字母漢字混合

一旦涉及到數字,字母和漢字一起混合的情況,我們就需要使用複雜數組公式了。

數組公式需要按住進行執行數組運算,公式左右兩側會出現大括号;

如果你是最新的預覽版 Office 365,直接按 Enter 就可以。

提取字符串在左右側的連續數字 ◆

數字在最右側。

=-LOOKUP(1,-RIGHT(O2,ROW($1:$15)))

數字快速算法口訣(8個必會的高效提取數字法)8

數字在最左側。

=-LOOKUP(1,-LEFT(R2,ROW($1:$15)))

數字快速算法口訣(8個必會的高效提取數字法)9

小解析:

首先使用 right 函數,從右到左分别截取長度為 1 到 15 的子字符串,再利用取負運算,将文本轉換為錯誤值,将數值轉換為負數;

然後利用 lookup 函數獲取數組的最後一個值,最後将負數取負轉為正數。

從左側提取的數字原理,跟從右側提取的原理相同。

數字在任意位置 ◆

借助 lookup 函數。

=-LOOKUP(0,-MID(K2,MIN(FIND(ROW($1:$10)-1,K2&1/17)),ROW($1:$15)))

數字快速算法口訣(8個必會的高效提取數字法)10

小解析:

❶ 首先利用 ROW 函數構造 0-9 的數字數組:

ROW($1:$10)-1

❷ 「1/17」等于 0.0588235294117647,它是一個包含 0-9 所有數字的值,連接在文本的尾部是避免 FIND 函數在查找數字時,因文本缺少相應數字而返回錯誤值。

❸ 用 FIND 函數查找 10 個數字在文本中的位置,利用 MIN 函數返回文本中出現數字的最小位置,即可以得到首個數字的位置。

❹ 利用 MID 函數從首個數字位置開始,依次向右截取長度為 1~15 的 15 個子字符串,加上負号,将數字轉化為負數,文本轉化為錯誤值。

最後利用 LOOKUP 函數返回最大的數字,再使用負号将負數轉化為正數。

❷ 借助 max 函數(隻能提取整數)。

公式如下:

=MAX(IFERROR(--RIGHT(LEFT(K20,ROW($1:$13)),COLUMN($A:$D)),0))

數字快速算法口訣(8個必會的高效提取數字法)11

小解析:

❶ 先用 len 函數确定字符串中最長的個數。

row(1:13)——13 這個數隻要大于字符串中最長的個數即可,目的是是後面一個個子字符的截取。

LEFT(K20,ROW($1:$13) ——從首個字符開始依次從右截取 1~13 個子字符串。

column(a:d)——a:d 取決于字符串中數字的最大位數。

RIGHT(LEFT(K20,ROW($1:$13)),COLUMN($A:$D)——從左開始向右依次截取 1~13 個子字符,再從此數組的基礎上從右開始依次向左截取 1~4 個子字符,此時是一個 13*4 的數組。

❺ 公式前加--,是為了将文本轉為錯誤值。

❻ 将錯誤值轉換為 0,從數組選出最大值,即可獲得最大數字。

哔哩吧啦講了一段,我問遠歌:

數字快速算法口訣(8個必會的高效提取數字法)12

關于提取單元格中的數字,你一般是怎麼做的?歡迎在留言一起交流~

私信回複關鍵詞【福利】,獲取豐富辦公資源,助你高效辦公早下班!

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关生活资讯推荐

热门生活资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved