1

这个例子应该清楚地解释我的问题

我有一个这种格式的巨大值表(50,000+ 行)

PHRASE 1   | PHRASE 2   | VALUE
Sun        | Blue       | North
Moon       | Green      | South
Star       | Red        | West

我有一个格式的短语列表(再次超过 50,000 行)

                      A                  B
         1| Moon Fun Light Green   |
         2| Star Amazing Ball Red  |
         3| Sun Cat Inside Blue    |
         4| Star Dog Red Watch     |

我需要按照以下几行搜索 - 如果您找到 PHRASE 1 和 PHRASE 2 都存在的行,则搜索 A1 返回相应的 VALUE

下面是我希望结果看起来如何的示例。即,搜索已检查顶部表中是否存在任何单词组合,并在可能的情况下返回适当的结果。不会有两组正面的问题,即 Moon Fun 和 Light Green。真正的值是所有艺术家姓名和曲目名称的组合。

                     A                   B
        1| Moon Fun Light Green    |   South   |
        2| Star Amazing Ball Red   |   West    |
        3| Sun Cat Inside Blue     |   North   |
        4| Star Dog Red Watch      |   West    |

几点注意事项:

  • 要搜索的短语列表也充满了其他文本,即单元格将是“今晚月亮出来了,我在绿山上”。我们需要搜索短语表,看看我们是否找到了 Moon 和 Green 的组合以及是否返回了相关的值。
  • 我需要在搜索中有多个条件,因为单个搜索词不足以缩小结果,我正在搜索的一些词是一般词或其他词的一部分(即 OFF 是 OFFLINE 的一部分)返回错误结果,搜索 OFF 和另一个术语同时解决了该问题。

  • 短语列表不是固定格式,所以我不能通过拆分列来准确计算所有值,即它不都是“月亮 - 绿色”

  • 我解决这个问题的方法是使用这个公式:

    IF(AND(ISNUMBER(SEARCH(C2,E2)),ISNUMBER(SEARCH(D2,E2))),B2,"")

    其中 C2 和 D2 是要搜索的值,E2 是要搜索的框,B2 是要返回的值。这个公式的问题是我仅限于一次搜索 1 个组合,即检查 C2 和 D2,而不是说检查 C2:C100 和 D2:D100 的数组

    我试过把这个公式变成一个数组,但没有运气。

  • 我也试过这个公式:

    =IFERROR(LOOKUP(2, 1/(ISNUMBER(SEARCH($L$7:$L$8, E2))), $K$7:$K$8),"")m

    但在这种情况下,它只能处理一个标准(即只搜索短语 1),不能同时处理短语 1 和 2。$L$7:$L$8 是要搜索的列表,E2 是要搜索的框,$K$7: $K$8 是要返回的相应值。

希望这足以继续。

4

1 回答 1

1

如果您愿意为每个数据集添加一个额外的列,那么这将起作用:

  • 在您的第一个值表上添加一个索引列,其中仅包含一个从 1 到 50,000+ 的数字
  • 在您的短语表上添加此数组公式

    {=SUM(ISNUMBER(SEARCH(L$2:L$50000,E2))*ISNUMBER(SEARCH(M$2:M$50000,E2))*P$2:P$50000)}
    

    (其中 L 和 M 是包含您的短语的列,P 是索引列)

  • 在查找中使用此列的结果。

如下所示,如果您不能(或不想)在第一个工作表中添加列,则可以将公式更改为

{=SUM(ISNUMBER(SEARCH(L$2:L$50000,E2))*ISNUMBER(SEARCH(M$2:M$50000,E2))*ROW(L$2:L$50000))}

并使用 OFFSET 从您的 VALUE 列返回正确的条目。

于 2015-06-25T13:07:50.897 回答