VLOOKUP(INDEX-MATCH)返回第n个结果,带有n个变量

问题描述 投票:0回答:1

我有以下两个表:

Table 1

Table 2

[我想从第二个表中检索ID CODE,并遵守重复值的顺序,即,如果[email protected]是第一个,我想要第一个ID CODE,如果第二个则是第二个ID,等等。>

我有公式INDEX-MATCH来获取第n个值,并且可以正常工作:

{=INDEX(array,SMALL(IF(vals=val,ROW(vals)-ROW(INDEX(vals,1,1))+1),nth))}

这里可以找到更详细的说明:https://exceljet.net/formula/get-nth-match-with-index-match

我的问题是我没有固定的nth值,但它会根据重复值的基本位置而变化。

我现在正在成功使用此公式:

IF(COUNTIF($A$2:$A2;$A2)=1; INDEX('Table2'!$E$1:$E$18;MATCH(A2; 'Table2'!$D$1:$D$18;0)); IF(COUNTIF($A$2:$A2;$A2)=2; INDEX('Table2'!$E$1:$E$18; SMALL(IF( 'Table2'!$D$1:$D$18=A2;ROW('Table2'!$D$1:$D$18)-ROW(INDEX('Table2'!$D$1:$D$18;1;1))+1);2)); IF(COUNTIF($A$2:$A2;$A2)=3; INDEX('Table2'!$E$1:$E$18; SMALL(IF( 'Table2'!$D$1:$D$18=A2;ROW('Table2'!$D$1:$D$18)-ROW(INDEX('Table2'!$D$1:$D$18;1;1))+1);3));"")))

基本上使用混合的Excel参考并转换为:

IF(COUNTIF(Dynamic Range, Mail Table 1 Value) = 1; Use INDEX-MATCH Formula with nth parameter set to 1; IF(COUNTIF(Dynamic Range, Mail Table 1 Value) = 2; Use INDEX-MATCH Formula with nth parameter set to 2;
IF(COUNTIF(Dynamic Range, Mail Table 1 Value) = 3; Use INDEX-MATCH Formula with nth parameter set to 3;""))

它可以工作,但是它并不优雅,很难维护,更重要的是,我必须使用嵌套的IF ad infinitum对其进行扩展,以避免任何类型的失败,所以我想听听针对此问题的更合适的解决方案。

我将在此处留下预期结果的表:

Table 3

我有以下两个表:我想从第二个表中检索ID CODE,并遵守重复值的顺序,即如果重复的是firstdgmail.com,则我要第一个ID CODE,...

excel vlookup
1个回答
0
投票

也许以下公式可以为您提供帮助:

=INDEX($E$2:$E$18;AGGREGATE(15;6;(A2=$D$2:$D$18)/(A2=$D$2:$D$18)*ROW($D$2:$D$18)-1;COUNTIF($A$2:A2;A2)))
© www.soinside.com 2019 - 2024. All rights reserved.