Excel索引还是vlookup?

时间:2015-08-30 16:29:52

标签: excel indexing vlookup

我试图做一个每月显示前10位电子邮件发件人的报告。

在工作表1上,我在A列中显示2015年1月,2015年2月等,在B列中显示电子邮件地址列表,在C列中显示这些用户在每个月发送的总数。在工作表2上,我希望结果显示我有一个日期DDL,2015年1月,2015年2月可供选择,依此类推。

我想要的(如果可能的话)就是当我在工作表2上选择日期时,它会提取发送的前10个最高电子邮件数量以及相应的用户以及当我更改日期时#39; d喜欢要更新的信息。

电子表格的示例如下所示。实际上我正在研究的人有更多的信息,但这应该给出一般的想法。

date    sender  amount sent
Jan-15  john@email.com  12
Jan-15  david@email.com 23
Jan-15  claire@email.com    45
Jan-15  paul@email.com  56
Jan-15  ross@email.com  78
Feb-15  dayna@email.com 89
Feb-15  ben@email.com   65
Feb-15  gary@email.com  32
Feb-15  jim@email.com   15
Mar-15  james@email.com 48
Mar-15  luke@email.com  78
Mar-15  rebecca@email.com   96

然后在工作表2上说,A1将是我的DDL来选择日期范围。

任何帮助都会受到高度赞赏,因为我一直在试图弄清楚这个问题。

提前致谢 戴夫

编辑:我现在被要求为目前看起来像这样的时间添加额外的列

http://imageshack.com/a/img537/1409/CTwrcx.png

当我使用公式

= LARGE(IF($ A $ 5:$ A $ 9 = $ H $ 3,$ d $ 5:$ d $ 9),F5)

它只是按照大小顺序排列,但不反映发件人。我之前曾参与过索引/比赛,但无法让它发挥作用。

你能告诉我做错了吗?

非常感谢 戴夫

1 个答案:

答案 0 :(得分:1)

使用这样的数据布局:

enter image description here

您可以在Ctrl中使用以下数组公式(通过Shift + Enter + F3确认)并将其向下拖动:

=IFERROR(INDEX($B$2:$B$13,MATCH($F$1&LARGE(IF($A$2:$A$13=$F$1,$C$2:$C$13+ROW($C$2:$C$13)/10^7),E3),$A$2:$A$13&($C$2:$C$13+ROW($C$2:$C$13)/10^7),0)),"")

它是如何运作的:

LARGE(IF($A$2:$A$13=$F$1,$C$2:$C$13+ROW($C$2:$C$13)/10^7),E3)

找到E3-th最大数量的邮件,IF仅选择参数F1日期中的行。 ROW($C$2:$C$13)/10^7小数部分用于排序关系。

INDEX/MATCH组合在输入表上执行2列(日期和数量+行小数部分)查找。

如果参数日期没有足够的条目,

IFERROR将返回空字符串。

编辑:(回复评论中的问题):要添加金额,请使用LARGE公式:

=LARGE(IF($A$2:$A$13=$F$1,$C$2:$C$13),E3)