返回列表 上一主題 發帖

只取出字串中的中文字元

只取出字串中的中文字元

字串中可能包含 中文 英文 標點 空格,能不能只取出其中的中文,如"3D. 偉大(中文版)">>>>>"偉大中文版"
請教各位前輩.
lmh

A1="3D. 偉大(中文版)"
B1=IF(LENB(MID($A1,COLUMN()-1,1))=2,MID($A1,COLUMN()-1,1),"")&C1
B1公式右拉複製(右拉格數為字串最大長度)
{...} 表示需要用 CTRL+SHIFT+ENTER 三鍵輸入公式

TOP

多謝指教,右拉取得結果,以前沒試過,我用vb右拉20格,這20格是隱藏的,所以B欄取得我要的結果,十分感激你
lmh

TOP

處理文字沒有陣列組合函數,所以利用右拉多格公式來合併處理
若你用VBA就不用那麼辛苦
{...} 表示需要用 CTRL+SHIFT+ENTER 三鍵輸入公式

TOP

再請教vb里lenb如何用?
vb里 lenb(3)出錯,lenb("3")=2,何解?
lmh

TOP

問題解決了
Function ZW(A)
For i = 1 To Len(A)
If LenB(StrConv(Mid(A, i, 1), &H80)) = 2 Then
    zw2 = zw2 & Mid(A, i, 1)
End If
Next i
ZW = zw2
End Function
還是要謝謝你
lmh

TOP

Function ZW(A)
For i = 1 To Len(A)
If LenB(StrConv(Mid(A, i, 1), &H80)) = 2 Then
    zw2 = zw2 & Mid(A, i, 1)
End If
Next i
ZW = zw2
End Function

拿掉 StrConv 函數如下,執行就不對,WHY?

Function ZW1(A)
ZW = ""
For i = 1 To Len(A)
If LenB(Mid(A, i, 1)) = 2 Then
    ZW = ZW & Mid(A, i, 1)
End If
Next i
End Function
{...} 表示需要用 CTRL+SHIFT+ENTER 三鍵輸入公式

TOP

本帖最後由 mhl9mhl9 於 2013-8-10 00:50 編輯

我是看到以下兩段知道vba里lenb和excel的lenb不同
VBA中:LenB 返回的是用于代表字符串的字节数,而不是返回字符串中字符的数量。
而在工作表,结果似乎表明汉字当双字节而字母和数字当单字节处理的。

Function LenMbcs(ByVal str As String)
    LenMbcs = LenB(StrConv(str, vbFromUnicode))
End Function
Sub yyy()
a = LenMbcs("劉abc")
End Sub
a=5------(2+3)
lmh

TOP

{...} 表示需要用 CTRL+SHIFT+ENTER 三鍵輸入公式

TOP

用 “正規表示式”

Function CountDblChr(ByVal sCh As String) As Integer

    Set re = CreateObject("vbscript.regexp")

    're.Pattern = "[\u4e00-\u9fa5]" '判斷中文字(包括特殊字,但不包括符號。和數字如1)

    re.Pattern = "[^\x00-\xff]" '判斷所有的全形字

    re.Global = True

    re.IgnoreCase = True

    Set matches = re.Execute(sCh)

    CountDblChr = matches.Count

    Set re = Nothing

End Function
ss

TOP

        靜思自在 : 願要大、志要堅、氣要柔、心要細。
返回列表 上一主題