我需要帮助来创建VBA / Macro或任何一次性公式来解决我的问题。
我在列中有一些字符串,想要从字符串中找到最后一个日期。
虽然我已经通过应用公式来解决它,但我必须在不同的地方写出3个不同的公式。我的数据如下:
验证
Series.isin
我只希望日期是字符串的最后一个
A2 [UR: 12/6-12/11 det]
A3 [UR; 11/18-12/11 php]
A4 [UR: 9/30-10/4 det;iop(m-f)10/26-11/28 php; 11/30-12/21 iop (m-f)]
A5 [UR; 10/12-10/16 det;11/1-11/27 php; 11/28-12/9 iop (m-f)]
A6 [UR: 11/11-11/21 rtc; 11/22-11/28 php]
A7 [UR: 11/8-11/14 det(m-f); 11/15-11/29 rtc; 11/30-12/9 php]
在我的第一步中,我删除了(m-f)我的公式
12/11
12/11
12/21
12/09
11/28
12/09
在我的第二步中,我删除了所有字母。通过应用以下公式。
=IFERROR(LEFT(AE3,FIND("(",AE3,1)-2),AE3)
在我的第3步
SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(LOWER(AF3),"a",""),"b",""),"c",""),"d",""),"e",""),"f",""),"g",""),"h",""),"i",""),"j",""),"k",""),"l",""),"m",""),"n",""),"o",""),"p",""),"q",""),"r",""),"s",""),"t",""),"u",""),"v",""),"w",""),"x",""),"y",""),"z",""),"(",""),")",""),"",""),"]",""))
但我仍然需要进行一些手工操作,因为上次日期不是MM / DD形式。
答案 0 :(得分:0)
这不是一个完整的解决方案,但可能是一个方向
Option Explicit
Function getDates(ByVal myStr As String)
Dim regEx As Object
Dim Matches As Object
Dim Match As Object
Dim sOut As String
Set regEx = CreateObject("Vbscript.Regexp")
With regEx
.Pattern = "[0-9,/,-]"
.Global = True
Set Matches = .Execute(myStr)
End With
For Each Match In Matches
sOut = sOut & Match.Value
Next
getDates = Trim(sOut)
End Function
Sub Tester()
Dim sInput As String, sOutput As String
sInput = Range("A1")
sOutput = getDates(sInput)
Debug.Print sOutput
Debug.Print Right(sOutput, 10)
End Sub
A1应该包含你的字符串
答案 1 :(得分:0)
我根据您的示例更改了我之前回答的代码
Option Explicit
Function getLastDate(ByVal myStr As String)
Const DEL_CHAR = "/"
Const PATTERN = "[0-9,/,-]"
Const TRENNER = "-"
Dim regEx As Object
Dim Matches As Object
Dim Match As Object
Dim sOut As String
Dim sVar As Variant
Dim i As Integer
Set regEx = CreateObject("Vbscript.Regexp")
With regEx
.PATTERN = PATTERN
.Global = True
Set Matches = .Execute(myStr)
End With
For Each Match In Matches
sOut = sOut & Match.Value
Next
If Right(sOut, 1) = TRENNER Then
sOut = Left(sOut, Len(sOut) - 1)
End If
sOut = Right(Trim(sOut), Len(sOut) - InStrRev(sOut, TRENNER, Len(sOut)))
sVar = Split(sOut, DEL_CHAR)
For i = LBound(sVar) To UBound(sVar)
sVar(i) = Format(sVar(i), "00")
Next
getLastDate = Join(sVar, DEL_CHAR)
End Function
Sub Tester()
Dim sInput As String, sOutput As String
sInput = Range("A1")
sOutput = getLastDate(sInput)
Debug.Print sOutput
End Sub
您也可以在excel文件中将其用作UDF。