2016年2月17日 星期三

利用 Excel IF,RIGHT,LIFT,MID 函數 - 取出字串中的文字

本文主旨為應用Excel函數 Left , Right , Mid 來擷取儲存格字串中的文字 (另有 IF 函數的混合應用)



因應上班Excel報表格式需求,需將Excel儲存格中某字串的文字提出,作為儲存格值,

例:  78_mk1,當我們希望把 "mk1" 提出在個別儲存格時,

如:
            A             B
 (1) 78_mk1   //   mk1

則在 B1 儲存格輸入公式

=Right(A1,3) 此公式意思為,擷取A1儲存格右邊數來3個字串,

則 B1 會跑出 78_mk1 的右邊三個字串 "mk1"。

若是字串變長,需擷取兩種值呢?


如:78_xyz_A ,則希望把 "xyz" 及 "A" 分別提出在個別儲存格,

              A               B          C
   (1) 78_xyz_A   //   xyz   //   A

則在 B1 儲存格輸入公式

=Mid(A1,4,3) 此公式意思為,擷取A1儲存格中,左邊數來第4個開始的3個字串,

則B1會跑出 78_xyz_A 的中間三個字串 "xzy"。

另外在 C1 儲存格輸入公式

=Right(A1,1) 此公式意思為,擷取A1儲存格右邊數來1個字串,

則 C1 會跑出 78_xyz_A 的右邊一個字串 "A"。

我的儲存格中有多個 78_xyz_A 以及 78_mk1 值,要擷取不同字串的文字,剛剛教的公式無法直接下拉套用,該怎辦?

在擷取這類文字時,絕對不會只擷取一種,一定會有以下許多不同的字串種類要擷取,如下:

            A              B          C
(1) 78_xyz_A   //   xyz   //   A

(2) 78_mk3   //   mk3   //   mk3

(3) 78_aaa_G   //   aaa   //   G

(4) 78_za9   //   za9   //   za9

雖然剛剛所提供的公式,套用在個別儲存格上仍然可以使用,但必須就要針對不同的字串貼上不同的公式,有失使用Excel函數的效率,因此可以加入 IF 函數來解決此問題,

則在 B1 儲存格輸入公式

=IF(LEN(A1)=6,RIGHT(A1,3),MID(A1,4,3)) 此公式意思為,假設A1字串長度等於6 (這邊以 78_mk3 為基準),則擷取A1儲存格右邊數來3個字串,否則擷取A1儲存格中,左邊數來第4個開始的3個字串,如此一來如果A1是78_mk3則會擷取mk3;如果A1是78_xyz_A則會擷取xzy。

另外在 C1 儲存格輸入公式

=IF(LEN(A1)=6,RIGHT(A1,3),RIGHT(A1,1)) 此公式意思為,假設A1字串長度等於6 (這邊以 78_mk3 為基準),則擷取A1儲存格右邊數來3個字串,否則擷取A1儲存格中,數來第1個字串,如此一來如果A1是78_mk3則會擷取mk3;如果A1是78_xyz_A則會擷取A。

應用 B1 及 C1 的公式,可以解決函數無法足一套用的問題,可以增加其工作效率。

以上為簡單的 Excel 函數應用分享,希望對大家有幫助。