Vba VB.net从字符串获取日期

Vba VB.net从字符串获取日期,vba,excel,Vba,Excel,你能帮我从字符串/文本中提取日期吗 假设我有以下字符串 “这是一个日期,2016年1月23日Stackoverflow!” “这是2016年8月27日的日期格式。” “2017年3月22日也是一个日期。” 我需要的输出是这个 2016年1月23日 2016年8月27日 2017年3月22日 基本上我只需要文本中的日期。 请帮忙。谢谢@pᴇ注释中共享的ʜRegex模式完全符合您的示例。下面是如何将其与单元内函数一起使用 不要忘记添加对“Microsoft VBScript正则表达式5.5”的引用

你能帮我从字符串/文本中提取日期吗

假设我有以下字符串

  • “这是一个日期,2016年1月23日Stackoverflow!”
  • “这是2016年8月27日的日期格式。”
  • “2017年3月22日也是一个日期。”
  • 我需要的输出是这个

  • 2016年1月23日
  • 2016年8月27日
  • 2017年3月22日
  • 基本上我只需要文本中的日期。
    请帮忙。谢谢

    @pᴇ注释中共享的ʜRegex模式完全符合您的示例。下面是如何将其与单元内函数一起使用

    不要忘记添加对“Microsoft VBScript正则表达式5.5”的引用

    函数simpleCellRegex(Myrange作为范围)作为字符串
    Dim regEx作为新的RegExp
    作为字符串的Dim strPattern
    像弦一样的模糊的条纹
    作为字符串的暗输出
    暗匹配作为对象
    10.Tcrpattern:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;月月月月月月月月月月月月月月月月月124;十月;十月;十月;十月124:::::::::::::::::::::::::::::::}.[0-9]{1,2}.[0-9]{2,4}”
    如果strPattern“”则
    strInput=Myrange.Value
    用正则表达式
    .Global=True
    .MultiLine=True
    .IgnoreCase=False
    .Pattern=strPattern
    以
    如果正则表达式测试(strInput),则
    Set matches=regEx.Execute(strInput)
    如果匹配.Count 0,则simpleCellRegex=匹配.Item(0)
    其他的
    simpleCellRegex=“不匹配”
    如果结束
    如果结束
    端函数
    

    输入在A列,B列使用公式
    =simpleCellRegex(A1)

    测试


    这将很难做到,但正则表达式可能是你最好的选择。你打算使用VB.NET还是VBA?这是两种完全不同的语言。请在标签上注明。此外,这是没有免费的代码编写服务,因此,你应该显示你已经尝试了迄今为止。此链接可能会有所帮助:与这样的模式结合使用:可能会尝试一下,如果遇到问题,请返回代码并向代码提问。@Pᴇʜ您提供的模式非常有效。谢谢。谢谢。它很有效。。
    Function simpleCellRegex(Myrange As Range) As String
        Dim regEx As New RegExp
        Dim strPattern As String
        Dim strInput As String
        Dim strOutput As String
        Dim matches As Object
    
        strPattern = "(?:January|Februrary|March|April|May|June|July|August|September|October|November|December) [0-9]{1,2}, [0-9]{4}|[0-9]{1,2} (?:Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{2,4}|[0-9]{1,2}.[0-9]{1,2}.[0-9]{2,4}"
    
        If strPattern <> "" Then
            strInput = Myrange.Value
    
            With regEx
                .Global = True
                .MultiLine = True
                .IgnoreCase = False
                .Pattern = strPattern
            End With
    
            If regEx.Test(strInput) Then
                Set matches = regEx.Execute(strInput)
                If matches.Count <> 0 Then simpleCellRegex = matches.Item(0)
            Else
                simpleCellRegex = "Not matched"
            End If
        End If
    End Function