我的活动名称符合以下结构:
[Network] - [Language] - [Country] - [Channel] - [Campaign Type] - [Free Text]
这可能看起来像:
Google - English - India - Display - Discovery - Test A
我需要的是 excel 或 google 表格中的一个公式,它可以帮助我提取我想要的任何值。例如,我将下载原始数据并添加两列,一列提取语言,另一列提取国家/地区。
我设法拼凑了这个公式(如果活动名称在 D2 列),它可以给我语言,但我不确定如何调整它以移动到字符串的下一个值:
=iferror(MID($D2,SEARCH(" - ",$D2,SEARCH($D2,$D2,1))+3,SEARCH(" - ",$D2,SEARCH(" - ",$D2,SEARCH($D2,$D2,1))+3)-(SEARCH(" - ",$D2,SEARCH($D2,$D2,1))+3)),"")
先感谢您!
答案1
如果您有 Windows Excel 2013+,您可以使用该FILTERXML
函数
从字符串创建 xml:
="<t><s>" & SUBSTITUTE(D2," - ","</s><s>") & "</s></t>"
然后构造一个 xPath 来返回您想要的编号项目
因此,要提取语言项,您可以使用:
=FILTERXML("<t><s>" & SUBSTITUTE(D2," - ","</s><s>") & "</s></t>","//s[2] ")
要提取下一个项目,请将 [2] 更改为 [3]。
要提取第一、第三和第五个项目作为数组,可以使用:
=FILTERXML("<t><s>" & SUBSTITUTE(D2," - ","</s><s>") & "</s></t>","//s[position()=1 or position()=3 or position()=5]")
各种变化取决于您到底想做什么。
每个奇数节点:
"//s[position() mod 2 = 1]")
每个偶数节点
"//s[position() mod 2 = 0]")
最后 2 个节点
"//s[position() >= last()-1]"
所有节点分别放在一个数组中:
"//s"
如果您没有该FILTERXML
功能,还有其他方法可以实现此目的,但您需要告诉我们 Excel 的版本。