【问题标题】:Find matches within an Excel array formula result在 Excel 数组公式结果中查找匹配项
【发布时间】:2018-10-31 19:44:25
【问题描述】:

我正在寻找一种方法进行某种嵌套/间接查找。

  1. 我有一个包含两列的表格,其中 A 列包含汽车型号(例如 Mustang),B 列包含它们的品牌(例如 Ford)
  2. 在 F 列中,我有一个汽车型号列表。这可以是 A 列中列出的模型,但并非 A 列的所有模型都列在 F 中
  3. D 列包含一些汽车品牌。

对于 D 列中的每个汽车品牌,我需要确定是否存在 F 列中存在的模型。因此,对于 D 的 a 中的汽车品牌,我想在 B 列中查找相应的护理模型,然后我想要在 F 列中查找这些找到的护理模型的出现。

我成功地使用数组公式进行了第一次查找,但是我被困在如何确定结果数组和 F 中的范围是否具有共同元素(或非空交集)。

任何帮助将不胜感激!

henkgijsbert

A(Model)   B(Make)    C(empty)   D(=Make2)   E(=Found)   F(=carlist)

克尔维特    雪佛兰                    道奇         (1)? 克尔维特
卡马罗 雪佛兰 雪佛兰 (2)?野马
蒙迪欧     福特 卡马罗
野马    福特
挑战者道奇
复仇者     闪避

在上面的示例中,在 (1) 上,结果应该是 N,因为在品牌 D1(“Dodge”)的 F 列中不存在任何模型。在 (2) 上,结果应该是 Y,因为在品牌 D2(“雪佛兰”)的 F 列中有模型(甚至 2 个)。

我有以下数组公式获取 D1 中 Make“Dodge”的所有模型:

{=IFERROR(INDEX($A$1:$A$6; SMALL(IF(D1=$B$1:$B$6; ROW($A$1:$A$6);""); ROW()));"")}

如何将此数组公式的结果与 F 列中的匹配项进行比较?

【问题讨论】:

  • 您能分享一些数据、预期结果和您当前的公式吗?
  • 嘿@QHarr,我添加了一个示例和我已经拥有的数组公式。我希望我现在说得更清楚了。
  • 为什么取最小值,即SMALL(?假设它在 Make 中找到任何值,它将获取 Model 列表中的第一个结果。因此,如果您想找到 Mustang,SMALL 将返回 Mondeo,因为该行首先出现(具有要返回的最小值......)只是好奇。

标签: excel array-formulas


【解决方案1】:

你可以在E3中输入以下内容并向下拖动。使用 Ctrl + Shift+ Enter 输入公式,即作为数组公式。

 =IF(SUMPRODUCT(--ISNUMBER(MATCH($F$3:$F$5,IF(ISNUMBER(SEARCH($D3,$B$3:$B$8)),$A$3:$A$8,""),0)))>0,"Y","N")

数据:

【讨论】:

  • 这个不起作用,因为它没有对点击进行求和:在 D 列中输入福特而不是雪佛兰,你会看到它(野马是福特,所以你的公式应该返回 Y,但它会说N)。
  • F4是野马,是福特,所以在列表中。
【解决方案2】:

如果您不想在 G 列中查找品牌,可以使用以下公式:

=IF(0<SUM(MMULT(--(TRANSPOSE($A$2:$A$7)=$F$2:$F$3),--($B$2:$B$7=$D2))),"Y","N")

但我建议在 G 中创建一个 Make2 列,这样以后会更容易理解。

【讨论】:

  • 注意:稍后,如果你想知道 make 在 F 中出现了多少次,你只需要取 SUM(...) 部分。
  • 谢谢@z32a7ul!您的回答也有效,但我发现 QHarr 的回答更容易理解。
猜你喜欢
  • 2017-03-22
  • 1970-01-01
  • 2016-03-11
  • 1970-01-01
  • 2015-05-10
  • 2015-08-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多