我已经设法从表(tblData)中提取前 10 个分数,其参数如下:
- 类型= 贷款利率
- 年= 今年 (TYEAR)
- 季度报告= 本财政年度的本季度 (QUARTER)
- A 列使用以下方式占据 1 - 10 个位置:大的功能。
{=LARGE(IF((tblData[Type]=LPR)*(tblData[Year]=TYEAR)*(tblData[QTR]=QUARTER),tblData[Score]),$A7)}
我现在需要从 tblData(原始表)中提取前 10 个分数所在的每一行的匹配信息。
使用 INDEX 和 MATCH 函数我可以执行以下操作从表的第 3 列中提取数据:
{=INDEX(tblData[#All],MATCH(1,(tblData[Type]=LPR)*(tblData[Year]=TYEAR)*(tblData[QTR]=QUARTER)*(tblData[Score]=$B7),0),3)}
这种方法效果很好,直到前 10 名中出现重复的分数。然后我从 tblData 第 3 列中获得针对两个分数的相同信息。
我知道答案就在我眼前!
我的原始数据:
我的输出:
表数据:
答案1
使用修改后的公式这个答案
=INDEX(tblData[Code], MATCH(1, INDEX((tblData[Score]=LARGE(IF((tblData[Type]=LPR)*(tblData[Year]=TYEAR)*(tblData[QTR]=QUARTER),tblData[Score]),$A7))*(COUNTIF(C$1:C1, tblData[Code])=0),),0))`
解释
此公式创建一个前 10 个表,然后查找适当的代码字符串。(COUNTIF(C$1:C1, tblData[Code])=0)
此部分查看当前列,并查看是否已插入特定代码字符串。如果已插入,则查找下一个出现的位置。
例如,如果和ABC
的DEF
值都是 9,则列中将显示第 4 个位置是ABC
。当它尝试查找 9 的值时,公式的这一部分知道ABC
已经在列中,因此它将找到下一个值为 9 的代码字符串,即DEF
。所以现在在第 5 个位置显示DEF
。