返回列表 上一主題 發帖

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

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

本帖最後由 sunnyso 於 2013-4-8 20:17 編輯

如何判斷是否 全形字? 有沒有用 VBA 和不用VBA的方法.  謝謝

用=CODE() 對"氹" 字 沒有用

Capture.JPG
2013-4-8 20:14
  1. 字        is全形
  2. 氹        TRUE
  3. 仔        TRUE
  4. 澳        TRUE
  5. A        FALSE
  6. 1        FALSE
  7. 1        TRUE
  8. ?        FALSE
  9. ?        TRUE
  10. .        FALSE
  11. 。        TRUE
複製代碼
q.rar (6.22 KB)
ss

回復 1# sunnyso
一般而言,字串的字碼對應字元與顯示字串不同時(如繁體系統顯示簡體文字)
氹(ㄍㄢ)字使用CODE函數取得的字元碼是63
63對應的字串是?(問號)
以此為依據,顯示與對應不同則屬於中文字為全型字
不在0~127字碼表內的文字也屬於全型字(128~255是否屬於全型?)
得到的規則
B2=OR(CHAR(CODE(A2))<>TEXT(A2,"@"),CODE(A2)<0,CODE(A2)>127)
是否還有其他規則屬於全型,還請各位指正

   
未命名.png
2013-4-9 09:03
學海無涯_不恥下問

TOP

謝謝,  code() 會小於0 嗎?若會什麼情況?
ss

TOP

回復 3# sunnyso
應該是沒有
就少個判斷條件吧
=OR(CHAR(CODE(A2))<>TEXT(A2,"@"),CODE(A2)>127)
學海無涯_不恥下問

TOP

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

我本來也是用 >255 來判斷, doublebyte字

未知是否 Excel 的 bug
ss

TOP

回復 5# ML089


    有很多古字或少用的字用code()查詢會得到63的字,用lenb()查都會得到1

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

回復 9# ML089



ss

TOP

        靜思自在 : 世上有兩件事不能等:一、孝順 二、行善。
返回列表 上一主題