我有以下两个表:


我想从第二个表中检索ID代码,考虑到重复值的顺序,例如,如果duplicated1@gmail.com是第一个,我想要第一个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
我的问题是我没有一个固定的第n个值,但它会根据重复值的基数位置而变化。
我现在成功地使用了这个公式:
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来扩展它,以避免任何类型的失败,所以我想听到这个问题的更合适的解决方案。
我将在这里留下包含预期结果的表:

发布于 2020-03-25 09:01:50
也许下面的公式可以帮助你:
=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)))

发布于 2020-03-25 17:12:54
作为@basic的答案的替代方案,感谢他的直觉,我将在这里发布我的公式,使用COUNTIF($A$2:A2;A2)作为参数进行简化:
{=INDEX('Table 2'!$E$2:$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);COUNTIF($A$2:$A2;A2)))}https://stackoverflow.com/questions/60841018
复制相似问题