返回列表 上一主題 發帖

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

參考看看:
=BIG5(A2)=A2

大凡〔特殊字.罕用字.自造字〕:
CODE為63,LENB為1,
放在VBE時,顯示"?"
較常見字,如:〔堃〕

TOP

計算〔全型字〕字元數:
A1:氹堃仔澳A12135k??
B1:=LEN(A1)+LENB(A1)-LENB(BIG5(A1))

以前從沒考慮特殊文字,此題出得好!

TOP

回復 23# sunnyso


∼∼LeftB(   , 1) 在VBA好像不能用___〔LeftB〕在工作表函數與VBA函數作用不同,只能使用〔Evaluate〕來帶!

A1文字:氹仔 堃 澳A1??2135H?V

1.以MID跑迴圈取字,再逐一比對:
  Sub 全型字元數1()
  Dim j%, Jm%, T$
  For j = 1 To Len([A1])
    T = Mid([A1], j, 1)
    If T <> Evaluate("LeftB(""" & T & """,1)") Then Jm = Jm + 1
  Next j
  MsgBox "全型字共有:" & Jm & " 個"
  End Sub
 
2.不用迴圈:
  Sub 全型字元數2()
  Dim X1%, X2%
  X1 = Len([A1])
  X2 = Evaluate("Len(LeftB(""" & [A1] & String(X1, "1") & """," & X1 * 2 & "))")
  MsgBox "全型字共有:" & X1 * 2 - X2 & " 個"
  End Sub
 
  公式演示:
  B1:=LEN(A1)*2-LEN(LEFTB(A1&REPT(1,LEN(A1)),LEN(A1)*2))
 
  其他參考:文字若超過99字,請自行調整
  =LEN(A1)*2-LEN(LEFTB(A1&REPT(1,99),LEN(A1)*2)) 
  =FREQUENCY(LEN(LEFTB(MID(A1,ROW(1:99),1)&"TT",2)),{1,0})
  =SUMPRODUCT(N(LEN(LEFTB(MID(A1,ROW(1:99),1)&"TT",2))=1))
  
  若不考慮〔特殊字〕應會單純些,以上粗略程式碼及公式供參考,看版主們是否再提供較正規的精闢解法!

TOP

        靜思自在 : 做好事不能少我一人,做壞事不能多我一人。
返回列表 上一主題