[英]Extract substrings from irregular text in Excel cell
公式的一種選擇是使用新函數,目前在 BETA 頻道中可供內部人員使用:
B1
中的公式:
=LET(A,TEXTSPLIT(A1,{"@","$","&","*","#"},,1),B,SORTBY(A,IFERROR(MATCH(RIGHT(A),{"r","M"},0),3)),C,HSTACK(TAKE(B,,2),TEXTSPLIT(TEXT(--INDEX(B,3),"YYYY-Mmm-D"),"-")),IFERROR(--C,C))
這個想法是:
LET()
來存儲變量;TEXTSPLIT()
列 A 中的值使用所有可用的分隔符到列中並跳過結果數組中的空值;SORTBY()
使用MATCH()
生成的三個元素的最右邊的字符。 IFERROR()
將捕獲數據字符串;YYYY-MMM-D
之后,我們可以使用HSTACK()
將第一列和第二列拆分為第三個元素的結果;備注:
為了好玩,使用正則表達式的 UDF:
Public Function GetPart(inp As String, prt As Long) As Variant
Dim Pat As String
Select Case prt
Case 0
Pat = "(\d+-atr)"
Case 1
Pat = "(\d+\s*[AP]M)"
Case 2
Pat = "-(\d{4})"
Case 3
Pat = "-(\w+)-"
Case 4
Pat = "(\d+)-\w+-"
Case Else
Pat = ""
End Select
With CreateObject("vbscript.regexp")
.Pattern = ".*" & Pat & ".*"
GetPart = .Replace(inp, "$1")
End With
End Function
通過=GetPart(0,A1)
調用。 選項是 0-4,並按列標題的順序排列。
您可以通過應用一些簡單的轉換來實現您的願望。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.