Excel:当查找值多次存在时使用find()

时间:2015-08-14 16:21:38

标签: excel excel-formula

在这种情况下,我很难使用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”的结果?

2 个答案:

答案 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运行到该列上具有第一个结果的列,按空格分隔(在您第一次执行此操作时记录宏,以便将来自动运行)。最终结果将是一列中的项目编号。