我有一个 excel 单元格,其中包含 3 个 url 和一些周围的文本(在一个长字符串中):
Product Image URL: http://www.Website.com/product_images/y/099/7703_269_ImageDescription1.jpg|Product Image URL: http://www.Website.com/product_images/c/999/7703_269_ImageDescription2.jpg|Product Image URL: http://www.Website.com/product_images/r/560/7703_269_ImageDescription3.jpg
我需要抓取第一个没有空格的 URL,以便我可以将它单独发送到另一个单元格(我需要对每一行都执行此操作)。
我已经研究过解决方案,但似乎找不到适合我的情况的解决方案,而且我对 Excel 上的公式还不熟悉。感谢您的时间 :)
答案1
如果我们假设您的文本在 A1 中:
Product Image URL: http://www.Website.com/product_images/y/099/7703_269_ImageDescription1.jpg|Product Image URL: http://www.Website.com/product_images/c/999/7703_269_ImageDescription2.jpg|Product Image URL: http://www.Website.com/product_images/r/560/7703_269_ImageDescription3.jpg
您可以像这样编写公式:
=MID(A1,FIND(":",A1)+2,FIND("|",A1)-FIND(":",A1)-2)
它会给你这个结果:
http://www.Website.com/product_images/y/099/7703_269_ImageDescription1.jpg
公式的解释是:
MID(文本,开始,长度)
将从文本中返回一个潜台词,在本例中我们将从 A1 中找到第一个“:”,然后从那里找到下一个“|”,并返回其中的文本。
FIND(搜索到的文本,完成的文本)
将返回我们在完整文本中搜索的文本的位置。
因此,我们将整个文本放入 MID,子文本的开始是“:”的位置 +2,忽略“:”和下一个空格。子文本的长度由“|”的位置减去“:”的位置定义。
编辑: 如果你的 A1 单元格只有一个值,那么 MID 的第二个参数需要大于我们想要获取的文本的长度,它可以保持如下:
=MID(A1,FIND(“:”,A1)+2,LEN(A1))
我们知道 LEN(A1) 比 A1 的子集长。
第二次编辑:
如果合并两者,我们只需要在查找“|”字符时检查错误即可。如果找到,则返回到该位置的长度,如果未找到,则返回 LEN(A1)。
=MID(A1,FIND(“:”,A1)+2,IF(ISERROR(FIND(“|”,A1)),LEN(A1),FIND(“|”,A1)-FIND(“:”,A1)-2))
答案2
经过一些研究和反复试验:
=MID(G2, FIND("产品图片网址:", G2) +19, (FIND("|产品图片网址:", G2)-(FIND("产品图片网址:", G2) +19)))
其中 G2 是带有 URL 的字段。