Excel 2020 將中英文分開

Neil Lai
3 min readMay 11, 2020

--

輸出結果

本文章函數只適用左邊完全是英文,且右邊完全是中文的字串。

輸出1:抓取左側英文部分

=LEFT(RC[-1],LEN(RC[-1])*2-LENB(RC[-1]))

語法

LEFT(text, [num_chars])
  • 從左邊往右邊擷取字串。
  • Text 你想從中擷取的字串。
  • Num_chars 必須大於或等於零,指定要用 LEFT 擷取的字元數。
RC[-1]

指向正左邊的儲存格。

LEN(text)LENB(text)
  • Text 要取得其長度的文字, 空白會當做字元計算。
  • LEN 函數傳回字串中的字元數,中英文都算1個字元。
  • LENB 函數傳回字串中字元的位元組數,中文字為2位元組,英文字為1位元組。

解析

這個函數式是藉由英文與中文的位元組差異,計算出左邊的英文字數量,並使用LEFT函數從左側擷取正確數量的字元。

LEN(RC[-1])*2-LENB(RC[-1])

LEN(RC[-1])

字串字元長度(中英文皆算1位元)也就是:
英文字數量*1+中文字數量*1

LENB(RC[-1])

字串位元組長度(英文算1位元、中文算2位元)也就是:
英文字數量*1+中文字數量*2

LEN(RC[-1])*2-LENB(RC[-1])

(英*1+中*1)*2-(英*1+中*2)=英文字數量*1

得出英文字數量後再放入LEFT函數的[num_chars]變數即可。

=LEFT(RC[-1],LEN(RC[-1])*2-LENB(RC[-1]))

輸出2:抓取右側中文部分

=RIGHT(RC[-2],LENB(RC[-2])-LEN(RC[-2]))

語法

RIGHT(text, [num_chars])
  • 從右邊往左邊擷取字串。

其他都跟LEFT函數差不多。

RC[-2]

因為我們的輸出是第三直行,所以要指向左邊第二個儲存格。

LEN(text)LENB(text)

這兩個函數也跟上面一樣。

解析

與取英文字的方式差不多,只是改為從右邊取中文字數量,先得出中文字數量就好。

LENB(RC[-2])-LEN(RC[-2])

LENB(RC[-2])
英文字數量*1+中文字數量*2

LEN(RC[-2])
英文字數量*1+中文字數量*1

LENB(RC[-2])-LEN(RC[-2])
(英*1+中*2)-(英*1+中*1)=中文字數量*1

一樣得出中文字數量後再放入RIGHT函數的[num_chars]變數即可。

=RIGHT(RC[-2],LENB(RC[-2])-LEN(RC[-2]))
輸出結果

--

--