【问题标题】:Need to understand fomula re: excel search for a string in a table and return string if true需要了解公式:excel在表格中搜索字符串,如果为真则返回字符串
【发布时间】:2015-09-02 13:26:44
【问题描述】:

我在几年前就调整了这个解决方案:

=LOOKUP(2^15,FIND(Keywords,A2),Categories)

我使用它在描述字段中搜索命名列表中的关键字,以便从相邻的命名列表中返回相应的类别。

但是我不明白 2^15 的意义。谁能解释一下?

此外,还不清楚搜索的操作顺序。如果两个关键字选项是“check”和“deposit”,它们被分配到不同的类别,但都出现在同一个描述字段单元格中,我怎么知道哪个会先找到?是在字符串中的位置,还是在列表中的顺序?

【问题讨论】:

    标签: excel excel-formula find lookup


    【解决方案1】:

    2^15 只是一个任意大的数字,它会尝试查找 - 当它找不到时,它会采用下一个最小的数字。

    实际上,您的公式会查看关键字,并尝试在 A2 中查找值。对于实际匹配 A2 的每个单词,它都会提供一条非错误消息。然后在整个列表中,它尝试在类别中查找该行号,导致许多错误和一个正确的值。查找通过使用 2^15 来选择值。尽管这似乎是一种奇怪的做法;它可能是 2007 年之前的保留,因为 Lookup 现在通常仅用于向后兼容的目的。同样使用 1 而不是 2^15 适用于我在编写本文时尝试的几个简单案例。

    【讨论】:

    • 我的猜测是,在 2007 年之前,Lookup 只排序 1-way,这意味着搜索值需要很高。但是,现在看起来它会尝试双向搜索,如果另一种方式发现错误。
    • 重点是 2^15 正好比任何单元格可以输入的字符的最大限制大一个数字。 FIND() 无法返回这么大的位置编号。但几乎在所有情况下,都可以使用更小的值。
    • 我的列表有 70 个关键字(在各种情况下组合),当我将公式中的数字更改为 1 时,它会返回错误。我使用值 75 尝试了公式,这似乎返回了正确的类别。那么这是否仅仅意味着这个数字需要大于我正在搜索的一组值?如果单个单元格中出现多个关键字,则首先匹配哪个关键字的顺序或优先级是什么?
    • 就优先级而言,它将占据列表中的最后一个,因为正如您所指出的那样,它会寻找可能的最高值并下降(诚然,我只尝试了包含 2 个项目的列表,并且两者都有使用 '1' 而不是 2^15)。另请注意,由于自然 excel 阈值,2^15 本身可能最初是在某个时候设计的,因为它是 2 的幂 [即,增加位的倍数]。
    • 如果您想要不同的功能,您应该提出一个新问题 [在查看之前提出的问题后];有很多方法可以做类似的事情,您可能会找到一种可以更好地完成您需要的事情。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-26
    • 2023-02-13
    • 1970-01-01
    相关资源
    最近更新 更多