當前位置:
首頁 > 最新 > 賭5毛錢的,你肯定從不知道提取字元如此輕鬆

賭5毛錢的,你肯定從不知道提取字元如此輕鬆

先來看看一個表,也不知道哪個挨千刀的,在記錄數據的時候搞成這個樣子,都聚集在A1單元格。要將A1中的姓名和銀行卡號分別提取出來,只需要一個自定義函數GetChar就可以輕鬆搞定。

C2單元格:=INDEX(GetChar($A$1,3),ROW(1:1))

D2單元格:=INDEX(GetChar($A$1,1),ROW(1:1))

銀行卡號可以搞定,身份證號也很容易,還是這個挨千刀的記錄員,把姓名和身份證號都登記在了A1單元格,有沒有一種想動刀子的衝動?再次請出自定義函數GetChar:

C2單元格:=INDEX(GetChar($A$1,3),ROW(1:1))

D2單元格:=LEFT(INDEX(GetChar($A$1,1),ROW(1:1))&"X",18)

那麼這個神秘的GetChar到底是什麼呢?

再和你賭5毛錢的,你現在的電腦里寫完這個公式之後,你得到的結果是:#NAME?

它是來源於我獨創的VBA自定義函數,在你的VBA模塊中植入以下代碼,來吧,和我一起輕鬆玩轉提取字元:

Function GetChar(strChar AsString, varType As Variant) 取值函數

Dim objRegExp As Object

Dim objMatch As Object

Dim strPattern As String

Dim arr

Set objRegExp =CreateObject("vbscript.regexp")

varType = LCase(varType)

Select Case varType

Case 1, "number"

strPattern ="-?d+(.d+)?"

Case 2, "english"

strPattern = "[a-z]+"

Case 3, "chinese"

strPattern ="[u4e00-u9fa5]+"

End Select

With objRegExp

.Global = True

.IgnoreCase = True

.Pattern = strPattern

Set objMatch = .Execute(strChar)

End With

If objMatch.Count = 0 Then

GetChar = ""

Exit Function

End If

ReDim arr(0 To objMatch.Count - 1)

For Each cell In objMatch

arr(i) = objMatch(i)

i = i + 1

Next

GetChar = arr

Set objRegExp = Nothing

Set objMatch = Nothing

End Function

它的功能設計就是專門為提取字元的,語法為:GetChar(strChar,varType):

varType參數為1時,提取:數字

varType參數為2時,提取:英文

varType參數為1時,提取:漢字

再來用GetChar來計算銷售金額,在B2輸入數組公式:

=PRODUCT(--(GetChar(A2,1)))

不知道你輸了多少錢給我?

更多函數精彩盡在《函數100例》第11期課程,每周日上午開課,通過100個實戰案例,講解70個函數在工作中的應用。帶你5分鐘完成月報統計。

函數課程2017年終大促,現在同時報名《Excel函數實戰技巧精粹》第20期和《Excel函數實戰100例》第11期兩門課,更可享受兩課各減50元的優惠。


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 Excel之家ExcelHome 的精彩文章:

拆分同一單元格中的姓名,原來這麼簡單啊!
VBA常用小代碼201:批量獲取指定文件夾下文件名
崇尚科學,破除迷信——將LOOKUP推下神壇
被我忽略多年的功能,想不到還挺厲害
Excel表中批量導入照片,這個方法挺管用!

TAG:Excel之家ExcelHome |