从复数 table 中获取某些值

Get certain values from complex table

我在 Excel (Google Drive link) 中有一个相当复杂的数据结构。我想从这个 table:

中得到某些值

我尝试了行列索引匹配的组合。但是这不起作用,因为我不知道如何找到所需的列。

有什么关于如何转换这个数据结构的建议吗?

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

在 M4 中输入:

=MATCH(H4,A:A,0)

IN N4 输入:

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

这些将 return 组的第一个和最后一个行号。

然后在J4,数组输入:

=INDEX(INDEX(INDEX($D:$D,$M4):INDEX($D:$D,$N4),MATCH(J,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,INDEX($D:$D,$M4):INDEX($D:$D,$N4),0)+1):INDEX($B:$B,$N4)=$I4),0))

记得用 Ctrl+Shift+Enter 确认。然后根据需要横向和向下填充。

可能有更简单的版本!

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

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

您的数据将如下所示:

然后在单元格 K4 中输入以下公式:

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

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

这里唯一的问题是将日期放入辅助列中,上面的方法只有在所有组的大小相等时才容易,但我假设给定样本数据。

此解决方案不需要工作 (helper) 个单元格,只需对您的输出稍作调整 table:

在单元格 I3

中输入单词 Date

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

(公式数组按 [Ctrl] + [Shift] + [Enter] 同时)

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