Excel 提取两个特定字符或数字之间的单词

Excel 提取两个特定字符或数字之间的单词,excel,vba,excel-formula,excel-2010,excel-2007,Excel,Vba,Excel Formula,Excel 2010,Excel 2007,我想从excel单元格中提取两个特定单词,即:单元格A1包含数据 {"defvcision":"DISASDEE","reascdwon":"labwcel","cowcddcents":"SwcA:Ercwdcror:CwcOwccPcewS:SewellerApcwecpewcal-BwerLR:2/24/2020 : 306973918 @ snedcharo"} 现在我想从单元格中提取306973918和snedcharo。这些to值在其他单元格中是动态的,即A2A3 我试过配方奶粉

我想从excel单元格中提取两个特定单词,即:单元格
A1
包含数据

{"defvcision":"DISASDEE","reascdwon":"labwcel","cowcddcents":"SwcA:Ercwdcror:CwcOwccPcewS:SewellerApcwecpewcal-BwerLR:2/24/2020 : 306973918 @ snedcharo"}
现在我想从单元格中提取
306973918
和snedcharo。这些to值在其他单元格中是动态的,即
A2
A3

我试过配方奶粉

=MID(A1, SEARCH(":",A1) + 1, SEARCH(":",A1,SEARCH(":",A1)+1) - SEARCH(":",A1) - 1)

但这是行不通的

如果所有单元格的格式都差不多,您也可以使用文本对该单元格上的列进行分隔和空格,您的数字将显示在“C”列上

最简单的方法是使用自定义项。
为了定义自定义项,您需要在工作表模块中编写简单函数,如下图所示:

然后您可以在工作表中使用它,如下所示:

以下是功能代码,您可以根据需要进行调整:

Function ExtractText(text As String)
    text = StrReverse(text)
    colonIdx = InStr(1, text, ":")
    apostropheIdx = InStr(1, text, """")
    text = Mid(text, apostropheIdx + 1, colonIdx - apostropheIdx - 2)
    ExtractText = StrReverse(text)
End Function

A2
中,公式复制到
A3

=TRIM(LEFT(RIGHT(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A$1,"""}","")," @","")," ",REPT(" ",99)),(3-ROW(A1))*99),99))

使用纯Excel解析JSON将是一件令人头痛的事(而且容易出错)。如果您需要在Excel中执行此操作,我建议使用VBA,它应该有一些JSON库可用。谢谢Tim。你能和我分享VBA脚本吗?我不能,因为我以前从未使用过VBA的JSON。如果你四处搜索,你可能会在搜索结果的第一页找到可用的代码。如果我需要从03(10个字符)或3(9个字符)开始提取10个字符的数量,如果你想在vba中解析简单的JSON(而不是多嵌套的),那么使用Tim Hall的Git Hub上的vba-JSON。。。我正在使用它,真的很有用。。。。。对于公式,请尝试<代码>中间(D5,1,FIND(@),中间(D5,FIND(,D5,1)+7,LEN(D5)),1)-1)