在 Excel 数组公式结果中查找匹配项
Find matches within an Excel array formula result
我正在寻找一种方法来进行某种 nested/indirect 查找。
- 我有一个 table 两列,A 列中有汽车型号(例如 Mustang),B 列中有汽车品牌(例如福特)
- 在 F 列中,我有一个车型列表。这可以是A列中列出的模型,但并非所有A列中的模型都必须在F
中列出
- D 列包含一些汽车品牌。
对于 D 列中的每个汽车品牌,我需要确定是否存在 F 列中存在的模型。因此,对于 D 中的汽车品牌,我想在 B 列中查找相应的保养模型,并且接下来,我想在 F 列中查找这些发现的护理模型的出现情况。
我成功地使用数组公式进行了第一次查找,但是我仍然卡在如何确定结果数组和 F 中的范围是否具有公共元素(或非空交集)。
任何帮助将不胜感激!
henkgijsbert
A(型号) B(品牌) C(空) D(=品牌 2) E(=找到) F(=carlist)
克尔维特 雪佛兰 道奇 (1)?
克尔维特
科迈罗
雪佛兰
雪佛兰
(2)?野马
蒙迪欧 福特
科迈罗
野马 福特
挑战者闪避
复仇者 闪避
在上面的示例中,(1) 的结果应该是 N,因为品牌 D1 ("Dodge") 的 F 列中没有任何型号。在 (2) 上,结果应该是 Y,因为品牌 D2 ("Chevrolet") 的 F 列中有模型(甚至 2 个)。
我有以下数组公式获取 D1 中 Make "Dodge" 的所有模型:
{=IFERROR(INDEX($A:$A; SMALL(IF(D1=$B:$B; ROW($A:$A);""); ROW()));"")}
如何比较此数组公式的结果与 F 列中的匹配项?
可以在E3中输入以下内容,往下拉。使用 Ctrl + Shift+ Enter 输入公式,即作为数组公式。
=IF(SUMPRODUCT(--ISNUMBER(MATCH($F:$F,IF(ISNUMBER(SEARCH($D3,$B:$B)),$A:$A,""),0)))>0,"Y","N")
数据:
如果您不想在 G 列中查找品牌,可以使用此公式:
=IF(0<SUM(MMULT(--(TRANSPOSE($A:$A)=$F:$F),--($B:$B=$D2))),"Y","N")
但我建议在 G 中创建一个 Make2 列,这样以后会更容易理解。
我正在寻找一种方法来进行某种 nested/indirect 查找。
- 我有一个 table 两列,A 列中有汽车型号(例如 Mustang),B 列中有汽车品牌(例如福特)
- 在 F 列中,我有一个车型列表。这可以是A列中列出的模型,但并非所有A列中的模型都必须在F 中列出
- D 列包含一些汽车品牌。
对于 D 列中的每个汽车品牌,我需要确定是否存在 F 列中存在的模型。因此,对于 D 中的汽车品牌,我想在 B 列中查找相应的保养模型,并且接下来,我想在 F 列中查找这些发现的护理模型的出现情况。
我成功地使用数组公式进行了第一次查找,但是我仍然卡在如何确定结果数组和 F 中的范围是否具有公共元素(或非空交集)。
任何帮助将不胜感激!
henkgijsbert
A(型号) B(品牌) C(空) D(=品牌 2) E(=找到) F(=carlist)
克尔维特 雪佛兰 道奇 (1)?
克尔维特
科迈罗
雪佛兰
雪佛兰
(2)?野马
蒙迪欧 福特
科迈罗
野马 福特
挑战者闪避
复仇者 闪避
在上面的示例中,(1) 的结果应该是 N,因为品牌 D1 ("Dodge") 的 F 列中没有任何型号。在 (2) 上,结果应该是 Y,因为品牌 D2 ("Chevrolet") 的 F 列中有模型(甚至 2 个)。
我有以下数组公式获取 D1 中 Make "Dodge" 的所有模型:
{=IFERROR(INDEX($A:$A; SMALL(IF(D1=$B:$B; ROW($A:$A);""); ROW()));"")}
如何比较此数组公式的结果与 F 列中的匹配项?
可以在E3中输入以下内容,往下拉。使用 Ctrl + Shift+ Enter 输入公式,即作为数组公式。
=IF(SUMPRODUCT(--ISNUMBER(MATCH($F:$F,IF(ISNUMBER(SEARCH($D3,$B:$B)),$A:$A,""),0)))>0,"Y","N")
数据:
如果您不想在 G 列中查找品牌,可以使用此公式:
=IF(0<SUM(MMULT(--(TRANSPOSE($A:$A)=$F:$F),--($B:$B=$D2))),"Y","N")
但我建议在 G 中创建一个 Make2 列,这样以后会更容易理解。