使用VLOOKUP从下拉列表返回一个数组

时间:2015-12-22 15:40:07

标签: excel-2010 vlookup

这让我疯了,所以我会尽力解释。基本上我有一个电子表格用于跟踪一年工资的工作时间。由于它是每两周一次,所以每隔一周进行一次检查,这意味着一年中的2个月会有几个月列出3次而不是列表中的两次。所以2016年的一个例子是:

   A        B          C
1  Jan 08   $1,900.00  Drop Down
2  Jan 22   $1,900.00  Check 1
3  Feb 05   $1,850.00  Check 2
4  Feb 19   $1,800.00  Check 3 if there is one
5  Mar 04   $1,900.00
6  Mar 18   $1,900.00
7  Apr 01   $1,900.00
8  Apr 15   $1,900.00
9  Apr 29   $1,800.00
10 May 13   $1,900.00
11 May 27   $1,900.00
12 Jun 10   $1,900.00
13 Jun 24   $1,850.00
14 Jul 08   $1,900.00
15 Jul 22   $1,900.00
16 Aug 05   $1,900.00
17 Aug 19   $1,900.00
18 Sep 02   $1,900.00
19 Sep 16   $1,900.00
20 Sep 30   $1,900.00
21 Oct 14   $1,900.00
22 Oct 28   $1,900.00
23 Nov 11   $1,900.00
24 Nov 25   $1,900.00
25 Dec 09   $1,900.00
26 Dec 23   $1,900.00

A栏包含薪水的日期,B栏包含您在该日期支付的金额。现在,我有一个下拉菜单,让你选择一个月,然后它只显示该月的薪水。

C1 = Drop down with January- December
C2 = check 1
C3 = check 2
C4 = check 3 if there is one

所以我尝试在每个单元格中进行VLOOKUP。

C2 =VLOOKUP(TEXT(C1,"mmm"),TEXT(A1:B26),2)

显然这不起作用,我意识到即使它确实有效,我怎么做C3来显示第二个薪水呢?无论如何都要做一个VLOOKUP,返回所有匹配的值,4月的IE它将返回A7,A8和A9,然后将它们按顺序放在C2-C4单元格中?

修改 因此,经过一些建议,这是我到目前为止:

C2=INDEX(A1:B26,(SMALL(IF(MONTH(A1:A26)=MONTH(C1),ROW(A1:A26)),ROW(1:1))),2)
C3=INDEX(A1:B26,(SMALL(IF(MONTH(A1:A26)=MONTH(C1),ROW(A1:A26)),ROW(2:2))),2)
C4=INDEX(A1:B26,(SMALL(IF(MONTH(A1:A26)=MONTH(C1),ROW(A1:A26)),ROW(3:3))),2)

C3和C4根本不起作用。 C2仅在我选择1月时有效,它返回B1,当我选择2月它返回B2 ...

2 个答案:

答案 0 :(得分:1)

我拆分了日期栏(见图),并通过我在评论中提供的链接使用了apporach。

您可以在单元格M12中输入月份的名称。在它旁边你会得到匹配的金额。

1月薪水首次出现的公式为:

=INDEX($M$1:$O$7,(SMALL(IF($M$1:$M$7=$M$11,ROW($M$1:$M$7)),ROW(1:1))),3)

对于第二次出现,它将是

=INDEX($M$1:$O$7,(SMALL(IF($M$1:$M$7=$M$11,ROW($M$1:$M$7)),ROW(2:2))),3)

如果您在下一行插入公式,则会收到错误(#ZAHL< - 它是德国Excel版本......)。

要屏蔽错误消息,您可以按照http://fiveminutelessons.com/learn-microsoft-excel/use-index-lookup-multiple-values-list

中的建议使用ISERROR功能

修改

正如OP指出的那样,月份和日期的分割是不可能的。我建议从列中提取月份数(通过MONTH)并调整上面的公式:

=INDEX($M$1:$O$7,(SMALL(IF(MONTH($M$1:$M$7)=MONTH($M$11),ROW($M$1:$M$7)),ROW(1:1))),3)

enter image description here

答案 1 :(得分:0)

找到答案:

{=IFERROR(INDEX($B$1:$B$9,SMALL(IF(MONTH($A$1:$A$9)=MONTH($C$1),ROW($A$1:$A$9)-ROW($A$1)+1,""),ROWS($A$1:A1))),"")}