使用Google工作表“ ImportXML”,我可以使用以下方法从网址(在A2单元格中)提取以下数据:
=IMPORTXML(A2,"//a/@href[substring-after(., 'AGX:')]").
数据:
/vector/AGX:5WH
/vector/AGX:Z74
/vector/AGX:C52
/vector/AGX:A27
/vector/AGX:C6L
但是,我想提取“ / vector / AGX:”之后的代码。代码不固定为3个字母,行数也不固定。
我使用了=INDEX(SPLIT(AP2,"/,'vector',':'"),1,2)
。但是它仅适用于一行数据。必须将index + split函数复制到整个列中,并且必须插入另一列来存储代码。
5WH
Z74
C52
A27
C6L
但是,我希望能够在AGX之后提取代码:一次性使用ImportXML。有办法吗?
答案 0 :(得分:0)
您的问题在于如何实现index公式。第一个参数返回行(在您的情况下为每个元素),第二个返回列(在您的情况下为AGX
或之后的代码)。
如果不是在单个单元格上使用此公式,而是在范围上应用此公式,并且未为该行设置任何值,则该公式将返回实现您想要的所有值。这是其实现(其中F1:F5
将是您希望应用此公式的值的范围):
=INDEX(SPLIT(F1:F5,"/,'vector',':'"),,2)
如果您仅使用IMPORTXML
和XPATH
对解决方案感兴趣,那么根据the documentation,您可以按如下方式使用子字符串:
=IMPORTXML(A1,"//a/@href[substring-after(.,'SGX:')]")
这样做的缺点是它将返回完整的字符串,而不是仅返回SGX:
之后的字符串,这意味着您将需要使用Google表格公式来拆分它。这是我专门使用XPath实现的最大成就。在XML中,应用forEach
并真正选择:
之后的内容会更容易,但是我相信,即使不是仅使用XPath,工作表也会更加复杂。
我希望这对您有所帮助。让我知道您是否需要其他任何东西,或者您是否不了解。 :)