【问题标题】:Extract words between two specific characters or number提取两个特定字符或数字之间的单词
【发布时间】:2020-06-16 14:01:52
【问题描述】:

我想从 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)

但这不起作用。

【问题讨论】:

  • 使用纯 Excel 解析 JSON 会让人头疼(而且容易出错)。如果您需要在 Excel 中执行此操作,我建议使用 VBA,它应该有一些可用的 JSON 库。
  • 谢谢蒂姆。你能分享我的 VBA 脚本吗?
  • 我不能,因为我以前从未使用过来自 VBA 的 JSON。如果你用谷歌搜索,你可能会在搜索结果的第一页找到可用的代码。
  • 如果我需要提取从 03(10 个字符)或 3(9 个字符)开始的 10 个字符的数量
  • 如果你想在 vba 中解析简单的 JSON(不是多嵌套的),请在 Git-Hub 上使用 Tim Hall 的 VBA-JSON...我正在使用它并且非常有用.....公式试试.....MID(D5,1,FIND("@",MID(D5,FIND("2020 :",D5,1)+7,LEN(D5)),1)-1)

标签: excel vba excel-formula excel-2010 excel-2007


【解决方案1】:

如果所有单元格的格式都一样,您还可以在此单元格上使用文本到列中,并带有分隔符和空格,并且您的编号将在“C”列上

【讨论】:

    【解决方案2】:

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

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

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

    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
    

    【讨论】:

      【解决方案3】:

      A2,公式复制到A3

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

      【讨论】:

        猜你喜欢
        • 2011-11-30
        • 1970-01-01
        • 2014-09-23
        • 2019-08-18
        • 1970-01-01
        • 2012-04-13
        • 2020-12-30
        • 2019-06-24
        • 2016-12-06
        相关资源
        最近更新 更多