在这种情况下,我很难使用find()函数。说,我有一个名为“库存”的大文本字符串,可能如下所示:
"[some text] 25 Item ABC [more text]"
我想构建一个工作表,将此文本字符串转换为适当的电子表格,如下所示:
|Item A | 0 |
|Item AB | 0 |
|Item ABC | 25|
我使用MID()和FIND()的组合取得了一些成功,使用这个公式来提取数字:
=IFERROR(NUMBERVALUE(MID([text field],FIND([Item Name],[text field])-4,3)),0)
但是我得到了这个:
|Item A | 25|
|Item AB | 25|
|Item ABC | 25|
这是因为“项目A”在搜索文本字段时,在“项目ABC”中找到“项目A”。我如何将其隔离出来,以便我只返回“项目ABC”而不是“项目A”和“项目B”的结果?
答案 0 :(得分:0)
你可以搜索一个带有空格的项目名称吗?即搜索"项目A"而不是"项目A"。这依赖于在每个项目名称之后使用的空格。
你的公式会变成
=IFERROR(NUMBERVALUE(MID([text field],FIND(CONCATENATE([Item Name]," "),[text field])-4,3)),0)
在您明确定义文本字符串之前,我无法提供帮助。我怀疑它有你可以使用的特性。
理想情况下,它应该具有分隔字符,如;或者,在号码和名字之间。你能改变它吗?这是最好的主意,然后你可以使用我上面提出的建议,但使用";"而不是" "
唯一的其他解决方案会变得复杂 - 您需要搜索文本,然后搜索空格和一个或多个数字"。你不能使用find这个并且必须使用VBA但你不想去那里。
答案 1 :(得分:0)
首先,使用find和left函数,删除item左侧的所有内容,这样你的字符串现在以“item”开头,并且位于不同的列中。将Text运行到该列上具有第一个结果的列,按空格分隔(在您第一次执行此操作时记录宏,以便将来自动运行)。最终结果将是一列中的项目编号。