【问题标题】:Get data between number two and three delimiter获取数字二到三分隔符之间的数据
【发布时间】:2016-07-24 08:50:42
【问题描述】:

我有很多人,每个人都有这样的一行。

Bill Gates, IT Manager, Microsoft, <https://www.linkedin.com/in/williamhgates>

我想提取特定单元格中的公司名称。在此示例中,它将是 Microsoft,它位于第二个和第三个分隔符之间(在本例中,分隔符是 ", ")。我该怎么做?

现在我正在使用拆分方法 (=SPLIT(A2, ", ",false))。但它给了我四个不同的单元格信息。我想要一个命令,只在一个单元格中输出公司。任何人都可以帮忙吗?我尝试了不同的东西,但我似乎找不到任何有效的东西。

也许一些正则表达式可以做到这一点,但我不喜欢正则表达式。

【问题讨论】:

  • 标签已修复,适用于谷歌电子表格

标签: google-sheets


【解决方案1】:

简答

使用 INDEX 和 SPLIT 获取两个分隔符之间的值。示例

=INDEX(SPLIT(A1,", ",FALSE),2)

解释

  • SPLIT 返回一个 1 x n 数组。
  • INDEX 的第一个参数可以是范围或数组。
  • INDEX 的第二个和第三个参数是可选的。如果第一个参数是一个只有一行或一列的数组,它会假设第二个参数对应数组的大边,所以不需要使用第三个参数。

【讨论】:

    【解决方案2】:

    有点讨厌,但假设单元格 D3 中有数据,这个公式有效。

    =MID(D3,FIND(",",D3,FIND(",",D3)+1)+2,FIND(",",D3,FIND(",",D3,FIND(",",D3)+1)+1)-FIND(",",D3,FIND(",",D3)+1)-2)
    

    分解,这就是它的作用:

    • 取D3的中点=MID(D3
    • 在第二个逗号后开始两个字符FIND(",",D3,FIND(",",D3)+1)+2
    • 以及第二个和第三个逗号之间的字符数,不包括空格FIND(",",D3,FIND(",",D3,FIND(",",D3)+1)+1)-FIND(",",D3,FIND(",",D3)+1)-2)

    【讨论】:

      【解决方案3】:

      我将添加我最喜欢的 ArratFormula,您可以使用它来自动扩展列表,而无需向下拖动公式。假设:

      1. 您的列表包含“A1:A20”范围内的数据
      2. 所有数据都有相同的sintax "...,Company Name, <...>

      在这种情况下,您可以使用粘贴在单元格 B1 中的 Arrayformula:

      =ArrayFormula(REGEXEXTRACT(A1:A20,", ([^,]+), <"))
      

      如果您的数据总是看起来像“...,公司名称,<... b1>

      =QUERY(QUERY(TRANSPOSE(SPLIT(JOIN(", ",A1:A20),", ",0)),"offset 2"),"skipping 4")
      

      在这个公式中:

      • offset 2 中的 2 更改为 0、1、2、3 以获取姓名、职位、公司、链接
      • skipping 4 中的 4 是多个项目。

      可以通过公式计算项目数:

      =len(A1)-len(SUBSTITUTE(A1,",",""))+1
      

      最后的公式是:

      =QUERY(QUERY(TRANSPOSE(SPLIT(JOIN(", ",A1:A20),", ",0)),"offset 2"),
      "skipping "&len(A1)-len(SUBSTITUTE(A1,",",""))+1)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-09-07
        • 1970-01-01
        • 1970-01-01
        • 2017-11-20
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多