匹配 Google 工作表中字符串末尾的部分文本
Matching partial text at the end of a string in Google Sheets
我有 data in a Google spreadsheet 需要匹配他们的标准国家代码。例如Greater Chicago Area
将是 US
。对于所有需要标记为 US 的单元格,它们似乎都以单词 Area
结尾。对于所有其他国家/地区,它们以国家/地区名称结尾。
我尝试了以下公式,但它似乎不起作用 -
=IFS(ISNUMBER(FIND("Area",A64)), "US", ISNUMBER(FIND("*United Kingdom",A64)), "UK")
.
有没有办法匹配字符串末尾的部分文本?
你的公式似乎没问题。在检查所有其他国家/地区代码后,请尝试将此 FIND 条件放在最后。
ISNUMBER(FIND("Area",A64)), "US"
如果您只想按名称查找,这里是答案,我没有使用国家/地区代码,但您可以轻松地进行查找替换搜索或从另一个范围定义 vlookup。
使用列 Header - 中列出的公式回答电子表格
https://docs.google.com/spreadsheets/d/1KOYWwqY_T8aG0USy5POVLjAdl99N2PrwWs5mpQAruRg/edit?usp=sharing
步骤:
- 从你的 pastebin 粘贴区域数据
- 字符串是否以 "Area" 结尾使用
=right(A2,4)="Area"
// 让我们知道几乎所有美国案例
- 使用
=find(",",A2)
查找逗号索引
// 让我们找到数组 中的最后一个单词
- 使用
=LEN(A2)-C2
查找逗号的右字符
// 告诉逗号右边有多少个字母(最后一个单词 + 一个 space)
- 使用
=D2-1
为 space 减 1
// 您可以对非标准化数据使用 Trim()
但对于您的用例 -1 工作正常
- 使用
=right(A2,E2)
逗号的所有权利
// 最后一句话
- 国家名称使用
=if(B2,"United States of America",F2)
// 如果它在设置为 US 的区域结束,否则将其设置为字符串中的最后一个单词
- 特殊情况处理使用
=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)))))
// 你需要重写的特殊情况。
- Vlookup 国家代码
=vlookup(H2,'Country Codes'!A:B,2,false)
/// 将根据提供的KEY在搜索范围的S列中找到国家代码。
如果您需要为演示文稿清理它,您只需将 ALL 单元格引用替换为该单元格中的公式,直到您一直嵌套回到 A 列。
你也可以试试这个单一公式
=INDEX(IFERROR(REGEXREPLACE(
REGEXREPLACE(A2:A,"Canada Area","Canada"),
" Area$|, TN$",", US")))
公式是如何工作的?
内部 REGEXREPLACE
在文本中找到表达式 Canada Area
并将其替换为 Canada
.
然后,外部 REGEXREPLACE
找到最后一个 Area
或 TN
字符串的位置,并将它们替换为 , US
(我们可以用更多条件进一步丰富公式如有必要)
最后 INDEX
和 IFERROR
的组合将我们的公式扩展到整个范围,不包括错误(现在返回为空单元格)。
至于使用的正则表达式符号,$
定义行尾,|
定义 OR
语句。
使用的函数:
我有 data in a Google spreadsheet 需要匹配他们的标准国家代码。例如Greater Chicago Area
将是 US
。对于所有需要标记为 US 的单元格,它们似乎都以单词 Area
结尾。对于所有其他国家/地区,它们以国家/地区名称结尾。
我尝试了以下公式,但它似乎不起作用 -
=IFS(ISNUMBER(FIND("Area",A64)), "US", ISNUMBER(FIND("*United Kingdom",A64)), "UK")
.
有没有办法匹配字符串末尾的部分文本?
你的公式似乎没问题。在检查所有其他国家/地区代码后,请尝试将此 FIND 条件放在最后。
ISNUMBER(FIND("Area",A64)), "US"
如果您只想按名称查找,这里是答案,我没有使用国家/地区代码,但您可以轻松地进行查找替换搜索或从另一个范围定义 vlookup。
使用列 Header - 中列出的公式回答电子表格 https://docs.google.com/spreadsheets/d/1KOYWwqY_T8aG0USy5POVLjAdl99N2PrwWs5mpQAruRg/edit?usp=sharing
步骤:
- 从你的 pastebin 粘贴区域数据
- 字符串是否以 "Area" 结尾使用
=right(A2,4)="Area"
// 让我们知道几乎所有美国案例 - 使用
=find(",",A2)
查找逗号索引 // 让我们找到数组 中的最后一个单词
- 使用
=LEN(A2)-C2
查找逗号的右字符 // 告诉逗号右边有多少个字母(最后一个单词 + 一个 space) - 使用
=D2-1
为 space 减 1 // 您可以对非标准化数据使用Trim()
但对于您的用例 -1 工作正常 - 使用
=right(A2,E2)
逗号的所有权利 // 最后一句话 - 国家名称使用
=if(B2,"United States of America",F2)
// 如果它在设置为 US 的区域结束,否则将其设置为字符串中的最后一个单词 - 特殊情况处理使用
=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)))))
// 你需要重写的特殊情况。 - Vlookup 国家代码
=vlookup(H2,'Country Codes'!A:B,2,false)
/// 将根据提供的KEY在搜索范围的S列中找到国家代码。
如果您需要为演示文稿清理它,您只需将 ALL 单元格引用替换为该单元格中的公式,直到您一直嵌套回到 A 列。
你也可以试试这个单一公式
=INDEX(IFERROR(REGEXREPLACE(
REGEXREPLACE(A2:A,"Canada Area","Canada"),
" Area$|, TN$",", US")))
公式是如何工作的?
内部 REGEXREPLACE
在文本中找到表达式 Canada Area
并将其替换为 Canada
.
然后,外部 REGEXREPLACE
找到最后一个 Area
或 TN
字符串的位置,并将它们替换为 , US
(我们可以用更多条件进一步丰富公式如有必要)
最后 INDEX
和 IFERROR
的组合将我们的公式扩展到整个范围,不包括错误(现在返回为空单元格)。
至于使用的正则表达式符号,$
定义行尾,|
定义 OR
语句。
使用的函数: