在这个可爱的论坛上也曾有人问过类似的问题,但是尽管我费了一番周折,但没有一个问题适用于我的问题。
我有两张表(排名、仪表板),我需要为每个标准找到最高的“k”值(第 1、第 2、第 3、第 4 等)。
在“排名”表上,我在 A 列中列出了报纸。在 D 列中,有一个标准,例如“英国”、“欧盟”和“促销”。
在 G3 中,我有一个代表 LARGE 公式的“k”值的数字 - 在本例中,它是 1
我将公式放在 H3 中。
{=INDEX(仪表板!$D$4:$D$17143,MATCH(1,INDEX((LARGE(IF(仪表板!$A$4:$A$17143=A3,仪表板!$O$4:$O$17143),G3)=仪表板!$O$4:$O$17143)(仪表板!$A$4:$A$17143=A3)(仪表板!$I4:I$17143=D3),0),0))}
解释如下:
仪表板 D:D 是广告游览参考 - 这就是我想要带回来的。
仪表板 A:A 是 17,000 个论文名称的列表(320 个唯一值)
仪表板 O:O 是每份报纸的每个广告的得分 - 最好的 4 个就是我想要的。
仪表板 I:I 是旅游类型(英国、欧盟、促销)
我希望公式能在仪表板上查找满足论文名称相同、旅游类型与指定类型相同以及分数与指定分数相同的前 k 个排名。
有什么想法吗?谢谢。
答案1
尝试了一段时间后,我发现LARGE
使用名称 (仪表板 A:A) 找到的结果与类型 (仪表板 I:I) 不匹配时会出现问题。我认为找到较大的值只是第一步,必须将其用作匹配条件的一部分,而匹配条件实际上是名称、类型和分数。请尝试使用这个数组公式:
{=INDEX(Dashboard!$D$4:$D$17143,MATCH(1,(A3=Dashboard!$A$4:$A$17143)*(D3=Dashboard!$I$4:$I$17143)*(LARGE((Dashboard!$O$4:$O$17143)*(A3=Dashboard!$A$4:$A$17143)*(D3=Dashboard!$I$4:$I$17143),G3)=Dashboard!$O$4:$O$17143),0),0)}
注意:不要忘记输入Ctrl-Shft-Enter
。
LARGE((Dashboard!$O$4:$O$17143)*(A3=Dashboard!$A$4:$A$17143)*(D3=Dashboard!$I$4:$I$17143),G3)
返回与G3
名称和类型匹配的数组中的第 n 个最大值。
现在您有了LARGE
值,您就拥有了获得匹配所需的所有 3 个条件:名称、类型和分数。
MATCH
TRUE
在与名称、类型和分数(仪表板 O:O)匹配的数组矩阵乘法中查找,并将索引提供给广告游览参考(仪表板 D:D)行。
警告:不确定这是否对您的使用有影响,但如果您有多个与名称、类型和分数匹配的行,这只会返回第一个,并且您不会知道可能还有其他匹配项。