【问题标题】:Matching partial text at the end of a string in Google Sheets在 Google 表格中匹配字符串末尾的部分文本
【发布时间】:2020-09-23 07:23:46
【问题描述】:

我有data in a Google spreadsheet,我需要匹配他们的标准国家代码。例如Greater Chicago Area 将是 US。对于所有需要标记为 US 的单元格,它们似乎以单词 Area 结尾。对于所有其他国家/地区,它们以国名结尾。
我尝试了以下公式,但它似乎不起作用 -

=IFS(ISNUMBER(FIND("Area",A64)), "US", ISNUMBER(FIND("*United Kingdom",A64)), "UK").

有没有办法匹配字符串末尾的部分文本?

【问题讨论】:

  • 你可以使用`=right(A34, 4)="Area"。但这仍然会让您在美国留在加拿大的部分地区。

标签: regex google-sheets google-sheets-formula array-formulas


【解决方案1】:

如果您只是想按名称来回答,我没有使用国家/地区代码,但您可以轻松地进行查找替换搜索或从另一个范围定义 vlookup。

使用列标题中列出的公式回答电子表格 - https://docs.google.com/spreadsheets/d/1KOYWwqY_T8aG0USy5POVLjAdl99N2PrwWs5mpQAruRg/edit?usp=sharing

步骤:

  1. 从您的 pastebin 中粘贴区域数据
  2. 字符串是否使用=right(A2,4)="Area" 以“区域”结尾 // 让我们知道几乎所有的美国案例
  3. 使用=find(",",A2) 查找逗号索引 // 让我们找到数组中的最后一个单词
  4. 使用=LEN(A2)-C2 查找逗号的字符右 // 告诉逗号右边有多少个字母(最后一个单词+一个空格)
  5. 使用=D2-1 将空格减1 // 您可以将 Trim() 用于非标准化数据,但对于您的用例 -1 可以正常工作
  6. 使用=right(A2,E2) 逗号的所有权利 // 最后一句话
  7. 国家名称使用=if(B2,"United States of America",F2) // 如果它以设置为 US 的区域结束,否则将其设置为字符串中的最后一个单词
  8. 特殊情况处理使用 =if(ISERR(F2),G2,if(G2="TN","United States",if(G2="TN","United States of America",if(G2="Zhejiang, China","China",if(F2="Canada Area","Canada",G2))))) // 您需要覆盖的特殊情况。
  9. 国家代码的Vlookup =vlookup(H2,'Country Codes'!A:B,2,false) /// 将根据提供的KEY在搜索范围的S列中找到国家代码。

如果您需要为演示文稿清理它,您可以将 ALL 单元格引用替换为该单元格中的公式,直到您一直嵌套回 A 列。

【讨论】:

  • Here is an example of the VLOOKUP implementation @NathanielKam 提到用国家代码替代国家名称。
  • 哦,这非常有用,谢谢@MateoRandwolf,我会将它添加到公共电子表格示例中以完成教程:)
  • 这非常有用!非常感谢!
【解决方案2】:

您的公式似乎没问题。请在检查所有其他国家/地区代码后尝试将此 FIND 条件放在最后。

ISNUMBER(FIND("Area",A64)), "US"

【讨论】:

  • 可以,但它匹配Area,无论它在哪里。如果它首先找到它,那么它会标记到该国家/地区代码。因此,Lisbon Area, Portugal 等条目也将被标记为 US
  • 即使避免这样做也会给你例如美国蒙特利尔,因为数据集包括Montreal, Canada Area。您应该检查您的来源以获取更多信息,或者手动检查边缘情况(gulp)
  • 编辑了我的公式。 “地区”不是“美国”代码独有的。 IFS 返回第一个 true 语句。您是否考虑过使用 SEARCH 公式。 SEARCH 接受通配符
【解决方案3】:

你也可以试试这个公式

=INDEX(IFERROR(REGEXREPLACE(
                      REGEXREPLACE(A2:A,"Canada Area","Canada"),
                               " Area$|, TN$",", US")))

公式是如何工作的?

内部REGEXREPLACE 在文本中找到表达式Canada Area 并将其替换为仅Canada
然后,外部REGEXREPLACE 查找最后一个AreaTN 字符串的位置并将它们替换为, US (如果需要,我们可以进一步丰富公式以提供更多条件)
最后,INDEXIFERROR 的组合将我们的公式扩展到整个范围,不包括错误(现在返回为空单元格)。
至于使用的正则表达式符号,$ 定义了行尾,| 定义了OR 语句。

使用的功能:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-21
    • 2019-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-22
    相关资源
    最近更新 更多