首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果同一字符串包含特定文本,则从该字符串复制文本。

如果同一字符串包含特定文本,则从该字符串复制文本。
EN

Stack Overflow用户
提问于 2013-09-17 22:49:00
回答 1查看 602关注 0票数 0

我在一个单元格中有类似于以下字符串的东西;

代码语言:javascript
复制
Thingy AA-03 1 5a5a5555555aaa bbbb000001111111 02/05/2013 ONE 1 EA HANDLE 0.000 0.000 0.000 0.0 0.0 0.000 0.0 F2AA 0.0000000 

我想返回bb000001111111,但只有在单元格包含AA-03的情况下,所需返回的位置和查找是否是流动的。

返回将改变,但将始终格式化相同,两个字母,5个s,然后标识信息,一个6-8位数,没有空格。bb000001234567

这有可能只是一个公式吗?

谢谢。

我非常接近;

代码语言:javascript
复制
=IF(ISERROR(FIND("HA-03",IFERROR(MID(Data!I47,FIND("F2AA00000",Data!I46),7),Data!I46))),IFERROR(MID(Data!I46,FIND("F2AA00000",Data!I46),16),""),"")
EN

回答 1

Stack Overflow用户

发布于 2013-09-18 00:44:18

这个问题似乎是查找字符串中的特定文本的延续.

您可以使用VBA函数作为工作表函数。

如果将以下代码添加到从我的先前的回答添加的代码中

代码语言:javascript
复制
Public Function RegExMatch(strInput As String, strRegEx As String, Optional MatchNo As Long = 0, Optional FirstIDX As Long, Optional Lgth As Long, Optional bIgnoreCase As Boolean = True, Optional bMultiLine As Boolean = False) As String
    Dim RegExp As VBScript_RegExp_55.RegExp, Matches As VBScript_RegExp_55.MatchCollection
    Set RegExp = New VBScript_RegExp_55.RegExp
    With RegExp
        .Global = True
        .MultiLine = bMultiLine
        .IgnoreCase = bIgnoreCase
        .Pattern = strRegEx
    End With
    If RegExp.test(strInput) Then
        Set Matches = RegExp.Execute(strInput)
        If MatchNo > Matches.Count - 1 Then
            RegExMatch = ""
        Else
            RegExMatch = Matches(MatchNo).value
            FirstIDX = Matches(MatchNo).FirstIndex
            Lgth = Matches(MatchNo).Length
        End If
    Else
        RegExMatch = ""
    End If
    Set RegExp = Nothing
End Function

然后,...You可以有一个公式:

代码语言:javascript
复制
=IF(RegEx(A1,"[A-Z]{2}-\d\d"), RegExMatch(A1,"[A-Z]{2}0{5}\d{6,8}"),"")

您可能需要查看参考部分这里,以获得更多关于正则表达式的有用信息。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18861142

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档