从复杂表中获取某些值

时间:2015-10-16 08:44:48

标签: excel excel-vba excel-formula excel-2010 spreadsheet vba

我在Excel中有一个相当复杂的数据结构(Google Drive link)。我想从这张表中得到一些值:

enter image description here

我尝试了一个行列INDEX MATCH的组合。但是这不起作用,因为我不知道如何找到所需的列。

有关如何转换此数据结构的任何建议吗?

3 个答案:

答案 0 :(得分:2)

在M和N中添加两个辅助列。

在M4中输入:

=MATCH(H4,A:A,0)

IN N4输入:

=COUNTIF(A:A,H4)-1+M4

这些将返回该组的第一个和最后一个行号。

然后在J4中,数组输入:

=INDEX(INDEX(INDEX($D:$D,$M4):INDEX($D:$D,$N4),MATCH(J$3,INDEX($D:$D,$M4):INDEX($D:$D,$N4),0)+1):INDEX($D:$D,$N4),MATCH(1,1/(INDEX(INDEX($B:$B,$M4):INDEX($B:$B,$N4),MATCH(J$3,INDEX($D:$D,$M4):INDEX($D:$D,$N4),0)+1):INDEX($B:$B,$N4)=$I4),0))

请记住使用 Ctrl + Shift + Enter 进行确认。然后根据需要填充和填充。

可能是一个更简单的版本!

答案 1 :(得分:2)

如果您可以添加辅助列A,则可以执行以下操作 A3:=E4,A4:=E4,A5:=E4,A6:=E4,A7:=E8 ......

获得前四个值后,您可以将其向下拖动到第一个组,然后从第2组将这四个公式拖到最后。

您的数据将如下所示: enter image description here

然后在Cell K4中输入以下公式:

=SUMIFS($E$3:$E$26,
        $A$3:$A$26, K$3,
        $B$3:$B$26, $I4,
        $C$3:$C$26, $J4)

一旦你有了这个,你就可以随意向下拖动它。

这里唯一的问题是将日期纳入辅助列,如果所有组的大小相同,上面的方法很容易,但我假设给定了样本数据。

答案 2 :(得分:1)

此解决方案不需要使用(helper)单元格,只需对输出表进行微调:

在单元格Date

中输入单词I3

然后在单元格FormulaArray中输入此J4,然后复制到J7,然后复制到范围K4:L7

(按 [Ctrl] + [Shift] + [Enter] 同时)

=INDEX($D$2:$D$26,
MATCH($H4&$I$3&J$3,$A$2:$A$26&$B$2:$B$26&$D$2:$D$26,0)
+MATCH($I4,OFFSET($B$2:$B$26,
+MATCH($H4&$I$3&J$3,$A$2:$A$26&$B$2:$B$26&$D$2:$D$26,0),0),0))