返回列表 上一主題 發帖

[發問] 如何判斷是否 全形字?

ASCII CODE 不是<=255 ?

全字型應該是指說雙元字型
一般用 LENB() 來判斷是否為全字型

但 氹 個字用 LENB("氹") = 1, 這可打破以往的想法

由下列兩式看出EXCEL處理方法也出現不一致性,"氹" 用MIDB出現2的字元,用LENB指出現1個字元
=MIDB("氹123",{1,2,3,4,5,6},1) ={" "," ","1","2","3",""}
=LENB(MID("氹123",{1,2,3,4,5,6},1)) ={1,1,1,1,0,0}
{...} 表示需要用 CTRL+SHIFT+ENTER 三鍵輸入公式

TOP

回復 4# Hsieh

    =OR(CHAR(CODE(A2))<>TEXT(A2,"@"),CODE(A2)>127)

單字元測試第一字元是否為全字型
=OR(CHAR(CODE(A2))<>A2$"",LENB(A2)=2)

多字元測試第一字元是否為全字型
如果以 CODE() 取第一字之特性,可以用 LEFT() 來匹配
=OR(CHAR(CODE(A2))<>LEFT(A2),LENB(LEFT(A2))=2)
{...} 表示需要用 CTRL+SHIFT+ENTER 三鍵輸入公式

TOP

回復 7# ANGELA

所以全形字的判斷就變得更複雜

樓主也太厲害,找出 氹 字,LENB()=1

不知哪裡可以找出這些字碼,再測試哪些字碼LENB()=1
{...} 表示需要用 CTRL+SHIFT+ENTER 三鍵輸入公式

TOP

回復 10# sunnyso


    請問你怎樣找出這些字?
{...} 表示需要用 CTRL+SHIFT+ENTER 三鍵輸入公式

TOP

本帖最後由 ML089 於 2013-5-8 14:39 編輯

我認為 ASCII CODE 0~255 為單字元,其他以外都稱為雙字元比較簡單
單字元特性 LEFT()與LEFTB()取值應該相同
用 =LEFTB(A2)<>LEFT(A2) 來判斷TRUE為雙字元,FALSE為單字元


於實務上運用範例
R3 ="氹仔澳A1??"
有4個全型字, 注意 "氹" 特別字元 LENB()=1

計算全型字公式
=SUMPRODUCT(--(MID(R3,ROW(1:9),1)<>LEFTB(MID(R3,ROW(1:9),1))))
=4
{...} 表示需要用 CTRL+SHIFT+ENTER 三鍵輸入公式

TOP

回復 16# 准提部林

BIG5 函數將半形字元轉換成全形 (雙位元組) 字元
A2為一個字元情況判斷是否為 全字型
用  =BIG5(A2)=A2 來判斷也是好方法,但仍需注意空字元 "" 及空格的判斷
{...} 表示需要用 CTRL+SHIFT+ENTER 三鍵輸入公式

TOP

本帖最後由 ML089 於 2013-5-21 21:36 編輯

回復 19# 准提部林


    讚讚讚!
    這應該是創新公式

註解一下,以免日後要忘記
B:全型字數
S:半型字數
B1:=LEN(A1)+LENB(A1)-LENB(BIG5(A1))
B1:=B+S + B*2+S - (B*2 + S*2)
B1:=B + (B*2+S*2) - (B*2 + S*2)
B1:=B
{...} 表示需要用 CTRL+SHIFT+ENTER 三鍵輸入公式

TOP

回復 21# Bodhidharma

沒錯,你的說明比較對,重點就是 X
{...} 表示需要用 CTRL+SHIFT+ENTER 三鍵輸入公式

TOP

        靜思自在 : 天上最美是星星,人生最美是溫情。
返回列表 上一主題