首页 > 解决方案 > 将值汇总到新工作表中以获得唯一日期和唯一名称

问题描述

所以这是我的场景,我已经有一个子程序,它从工作表 1 中提取唯一名称和唯一日期到工作表 2 中,创建唯一名称的布局作为行和日期作为标题。在工作表 1 中是主数据。每个月的每一天,同一个人都有不同的工作班次。例如...

在此处输入图像描述

D Gray 在 6 月 26 日工作了 3 个不同的班次,因此我需要将小时数的值相加,然后在相应的 6 月 26 日日期下填充到表 2 中,依此类推,以供其他机组人员使用。到目前为止的模板是..

在此处输入图像描述

新代码的结果

标签: excelvba

解决方案


我看不到图片,但我理解您的概念,因此希望您可以将以下内容应用于您的案例并将其用作您的答案。

假设 Sheet1 中的数据分别为 A、B 和 C 的日期、名称和工作时间(仅 100 行),SUMIFS则 sheet2 中的函数应如下所示:

=SUMIFS(Sheet1!$C$1:$C$100,Sheet1!$A$1:$A$100,B$2,Sheet1!$B$1:$B$100,$A2)

当您向下拖动它时,它将保留 sheet2 中的第一列、名称和 sheet2 中的第一行日期,总结了该月所有日子的所有工作时间。

如果您使用表格格式,您可以更进一步,公式将随着表格调整大小,因为它会使用命名范围。如果你愿意,我也可以帮你。

要让 VBA 将此公式添加到您的电子表格中,请使用以下命令:

Dim RangeFormula As Range
Set RangeFormula = Sheet("Sheet2").Range( [input cell range here])
RangeFormula.Formula ="=SUMIFS(Sheet1!$C$1:$C$100,Sheet1!$A$1:$A$100,B$2,Sheet1!$B$1:$B$100,$A2)

您可以将名称从 RangeFormula 更改为更适合的名称,您可以将工作表名称放在 Sheet2 所在的位置,但请确保将单元格范围放在范围部分中,并用 " 包围它。要将其作为表格引用,您需要使用这ListObjects("Table Name")


推荐阅读