我有一个包含多张工作表的工作簿。在每个工作表上,您可以从下拉列表中选择一个用户,然后从不同的下拉列表中选择一个项目。任何工作表上都可以有多个用户和项目实例。
我需要一张摘要表,您可以从下拉列表中选择用户,然后 Excel 将显示表中每项内容的总计。
我可以使用以下公式收集单个结果
=COUNTIFS('15'!$C:$C, E4, '15'!$D:$D, E5)
我的表格标题为 1 至 31。
答案1
要在具有相同列结构的多张工作表中使用 COUNTIFS,请将其与 SUMPRODUCT 和 INDIRECT 结合使用。
首先,在摘要工作表的 A 列中列出要包含在 COUNTIFS 函数中的所有工作表名称。例如,由于您的工作表名称为 1 至 31,因此请输入“图纸列表",然后在单元格 A2 到 A32 中输入值 1 到 31。
您提供的 COUNTIFS 示例现在可以修改为包含范围 A2:A32 中列出的所有工作表,如下所示:
=SUMPRODUCT(COUNTIFS(INDIRECT("'"&A2:A32&"'!C2:C1000"), E4, INDIRECT("'"&A2:A32&"'!D2:D1000"), E5))
注意:由于此公式计算 31 张工作表,请避免使用整列引用,如“C:C”或“D:D”;而是选择合理数量的行,这些行应延伸到数据下方足够远的地方,但不要太远,以免导致性能下降。在此示例中,我使用了“C2:C1000”和“D2:D1000”。
为了获得最终的汇总表(如您提供的屏幕截图所示),请使用绝对和相对范围引用的正确组合,以便能够将公式复制到汇总区域的所有行和列中。例如,对于范围 A2:A32 中的工作表列表、范围 C2:C3 中的用户列表和范围 D1:F1 中的项目列表,在单元格 D2 中使用以下公式,然后将其复制到下方并向下复制以完成报告:
=SUMPRODUCT(COUNTIFS(INDIRECT("'"&$A$2:$A$32&"'!C2:C1000"), $C2, INDIRECT("'"&$A$2:$A$32&"'!D2:D1000"), D$1))
最终结果应如下所示: