在单元格中搜索列表中的多个条件和 return 列表中的相应值
Search a cell for multiple critera from a list and return a corresponding value from the list
这个例子应该清楚地解释了我的问题
我有大量 table 这种格式的值(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 return 对应的 VALUE
下面是我希望结果的示例。 IE。搜索已检查顶部 table 是否存在任何单词组合,如果可能,return 编辑了适当的结果。不会有两组阳性的问题,即 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 |
一些注意事项:
- 要搜索的短语列表也充满了其他文本,即该单元格将是 "The Moon was out tonight I was on the green hill"。我们需要搜索短语 table,看看我们是否找到了 Moon & Green 的组合,如果我们找到了 return 相关值。
我需要在搜索中有多个条件,因为单个搜索词不足以缩小结果范围,我正在搜索的一些词是笼统的或者是其他词的一部分(即OFF 是 OFFLINE 的一部分)return 是错误的结果,因为搜索 OFF 和另一个术语同时解决了这个问题。
短语列表没有固定格式,所以我不能通过拆分列来真正准确地确定所有值,即它不是全部 "Moon - Green"
我解决这个问题的方法是使用这个公式:
IF(AND(ISNUMBER(SEARCH(C2,E2)),ISNUMBER(SEARCH(D2,E2)),B2,"")
其中 C2 和 D2 是要搜索的值,E2 是要搜索的框,B2 是 return 的值。这个公式的问题是我一次只能搜索 1 个组合,即检查 C2 & D2 而不是说检查 C2:C100 & D2:D100
的数组
我试过将该公式变成一个数组,但没有成功。
我也试过这个公式:
=IFERROR(查找(2, 1/(ISNUMBER(搜索($L$7:$L$8, E2))), $K$7:$K$8),"")m
但在这种情况下它只能处理一个条件(即只搜索短语 1),不能同时处理短语 1 和 2。$L$7:$L$8 是要搜索的列表,E2 是要搜索的框, $K$7:$K$8 对应的值是return.
希望这足以继续下去。
如果您愿意为每个数据集添加一个额外的列,那么这将起作用:
- 在第一个 table 只包含一个值的值上添加一个索引列
数字从 1 到 50,000+
在你的短语上添加这个数组公式sheet
{=SUM(ISNUMBER(SEARCH(L:L000,E2))*ISNUMBER(SEARCH(M:M000,E2))*P:P000)}
(其中 L 和 M 是包含您的短语的列,P 是索引列)
在查找中使用此列的结果。
如下所示,如果您不能(或不想)为您的第一份作品添加一列sheet,您可以将公式更改为
{=SUM(ISNUMBER(SEARCH(L:L000,E2))*ISNUMBER(SEARCH(M:M000,E2))*ROW(L:L000))}
并使用 OFFSET 来 return 您的 VALUE 列中的正确条目。
这个例子应该清楚地解释了我的问题
我有大量 table 这种格式的值(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 return 对应的 VALUE
下面是我希望结果的示例。 IE。搜索已检查顶部 table 是否存在任何单词组合,如果可能,return 编辑了适当的结果。不会有两组阳性的问题,即 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 |
一些注意事项:
- 要搜索的短语列表也充满了其他文本,即该单元格将是 "The Moon was out tonight I was on the green hill"。我们需要搜索短语 table,看看我们是否找到了 Moon & Green 的组合,如果我们找到了 return 相关值。
我需要在搜索中有多个条件,因为单个搜索词不足以缩小结果范围,我正在搜索的一些词是笼统的或者是其他词的一部分(即OFF 是 OFFLINE 的一部分)return 是错误的结果,因为搜索 OFF 和另一个术语同时解决了这个问题。
短语列表没有固定格式,所以我不能通过拆分列来真正准确地确定所有值,即它不是全部 "Moon - Green"
我解决这个问题的方法是使用这个公式:
IF(AND(ISNUMBER(SEARCH(C2,E2)),ISNUMBER(SEARCH(D2,E2)),B2,"")
其中 C2 和 D2 是要搜索的值,E2 是要搜索的框,B2 是 return 的值。这个公式的问题是我一次只能搜索 1 个组合,即检查 C2 & D2 而不是说检查 C2:C100 & D2:D100
的数组我试过将该公式变成一个数组,但没有成功。
我也试过这个公式:
=IFERROR(查找(2, 1/(ISNUMBER(搜索($L$7:$L$8, E2))), $K$7:$K$8),"")m
但在这种情况下它只能处理一个条件(即只搜索短语 1),不能同时处理短语 1 和 2。$L$7:$L$8 是要搜索的列表,E2 是要搜索的框, $K$7:$K$8 对应的值是return.
希望这足以继续下去。
如果您愿意为每个数据集添加一个额外的列,那么这将起作用:
- 在第一个 table 只包含一个值的值上添加一个索引列 数字从 1 到 50,000+
在你的短语上添加这个数组公式sheet
{=SUM(ISNUMBER(SEARCH(L:L000,E2))*ISNUMBER(SEARCH(M:M000,E2))*P:P000)}
(其中 L 和 M 是包含您的短语的列,P 是索引列)
在查找中使用此列的结果。
如下所示,如果您不能(或不想)为您的第一份作品添加一列sheet,您可以将公式更改为
{=SUM(ISNUMBER(SEARCH(L:L000,E2))*ISNUMBER(SEARCH(M:M000,E2))*ROW(L:L000))}
并使用 OFFSET 来 return 您的 VALUE 列中的正确条目。