標題:
[分享]
正則表達式(bosco_yip 原創)
[打印本頁]
作者:
Hsieh
時間:
2010-5-7 14:28
標題:
正則表達式(bosco_yip 原創)
正則表達式
給參考 :
問題 : 求一字符串字母個數
A1= ascd2G34dH_漢字!ya,不區分大小寫。答案是9
1] 函數解法 :
=SUMPRODUCT(--(ABS(CODE(MID(UPPER(A1),ROW(INDIRECT("1:"&LEN(A1))),1))-77.5)<13))
2] 用"正則表達式" (Regular Expression), 寫的自訂函數 :
Function CountAlpha(Mystr)
Dim RegExp As Object
Set RegExp = CreateObject("vbscript.regexp")
RegExp.Global = True
RegExp.ignorecase = True
RegExp.Pattern = "[^a-zA-Z]"
CountAlpha = Len(RegExp.Replace(Mystr.Value, ""))
End Function
作者:
toomellowhaw
時間:
2010-9-24 21:19
=SUMPRODUCT(LEN(A1)-LEN(SUBSTITUTE(UPPER(A1),CHAR(ROW(65:90)),)))
不知道有沒有漏算..
作者:
Hsieh
時間:
2010-9-24 21:22
回復
2#
toomellowhaw
中文字及特殊符號呢?
作者:
toomellowhaw
時間:
2010-9-24 21:25
問題的原意不是只要算英文字母數嗎?..還是我誤會了?
作者:
Hsieh
時間:
2010-9-24 21:29
回復
4#
toomellowhaw
抱歉!是我一時看錯題意
作者:
toomellowhaw
時間:
2010-9-24 21:35
呵,沒關係
在這兒逛逛,看看一些以前的文章,常能挖到寶..
看到一些題目,想試試自己能不能解,
練一練函數的用法,還需要大家多多指教,
如果有缺失或考慮不周全之處,務請指正,感恩..
作者:
oobird
時間:
2010-9-25 00:43
我也是由bosco_yip 指導初識正則表達式的。
作者:
asimov
時間:
2010-9-26 01:00
本帖最後由 asimov 於 2010-9-26 01:05 編輯
回復
2#
toomellowhaw
toomellowhaw兄用取代的方式很有啟發性
收下學習了,謝謝
Hsieh 版主的函數解法似乎少了 "&"
=SUMPRODUCT(--(ABS(CODE(MID(UPPER(A1),ROW(INDIRECT("1:"
&
LEN(A1))),1))-77.5)<13))
作者:
flying008
時間:
2010-9-28 17:23
感觉正则式其实在EXCEL应用起来的话功能是相当强大的, 只是其自定义函数的编写规则似乎难懂……
作者:
ML089
時間:
2012-9-23 17:20
回復
2#
toomellowhaw
如字串是 "aA123bB"
=SUMPRODUCT(LEN(A1)-LEN(SUBSTITUTE(UPPER(A1),CHAR(ROW(65:90)),))) 算出 2
(算出多少
種
英文字母不分大小寫)
=SUMPRODUCT(--(ABS(CODE(MID(UPPER(A1),ROW(INDIRECT("1:"&LEN(A1))),1))-77.5)<13)) 算出 4
(算出多少
個
英文字母不分大小寫)
作者:
ML089
時間:
2012-9-23 19:10
回復
1#
Hsieh
求字串中有幾個字母,提供一式如下
=SUMPRODUCT((MID(UPPER(A1),ROW($1:$99),1)=CHAR(COLUMN(A:Z)+64))*1)
UPPER()函數將小寫字母改為大寫字母,可縮減大小字母判斷
此式適合作為數據陣列處理的範例公式
作者:
stillfish00
時間:
2012-9-24 19:26
回復
1#
Hsieh
原寫法是取代掉字串中非字母的字元
這裡稍微修改 , 提供另一種寫法
Function CountAlpha(Mystr)
Dim RegExp As Object
Set RegExp = CreateObject("vbscript.regexp")
RegExp.Global = True
RegExp.Pattern = "
[a-zA-Z]
"
CountAlpha =
RegExp.Execute(Mystr.Value).Count
End Function
歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)