0

我需要一些让我头疼的 Excel 项目的帮助。我成功地实现了我想要的一切,但结果对于 Excel 来说太重了,而且它一直在崩溃。我在大表(50 000+ 行)上过度使用INDEXMATCH函数,而 Excel 不喜欢它。我正在寻找一种以更轻松的方式为 Excel 做同样事情的方法。

以下是我取得的成果:我创建了一份报告,帮助我分析员工的绩效与他们的计费目标。为了创建这样的报告,我使用了Pivot Table

该数据透视表需要此信息作为其来源:

  • 每个员工所做的每笔销售(金额以美元和日期为单位)
  • 每位员工的时薪(每个时期都会发生变化,见下表 1)
  • 每位员工的计费目标(每个时期都会发生变化,请参见下表 1)

这是我的设置。我有 3 张桌子:

  • 表 1 (见附图) - 我在其中手动输入每个员工的数据(小时费率和计费目标)的表。他们的计费目标和每小时费率每个时期都会发生变化。因此,每个时期都有不同的线,我表示时期的第一天和时期的最后一天。

  • 表 2 (见附图) - 包含从我使用的另一个软件导出的销售数据的表。每条线代表员工在特定日期向客户销售的金额。这张表很重,包含超过 50 000 行。此外,该表的最后 2 列使用索引和匹配函数从 TABLE1 中获取正确的小时费率和正确的计费目标。这意味着这 50 000 行中的每一行都使用了 INDEX 和 MATCH 函数两次……这部分对于 Excel 来说太重了,我需要一个解决方法。此外,TABLE2 每隔几天就会使用来自我的其他软件(ERP)的新数据进行更新。所以我需要找到的解决方案必须考虑到这一点并且必须是永久性的(我尽量避免每次用新数据刷新 TABLE2 时必须执行的步骤)。

  • TABLE3 -使用 TABLE2 作为其数据源的数据透视表。我使用切片器来选择员工的姓名和时间线来指定我想要显示的月份。然后数据透视表显示我的员工按月分组的统计数据。主要统计数据是每个员工的“计费小时数”,实际上是该员工的销售额除以特定日期的小时费率。

我的想法 :

  • TABLE2 使用了这么多 INDEX 和 MATCH 函数是荒谬的。例如,如果 Employee1 在 2020 年 7 月 1 日和 2020 年 7 月 31 日(同一个月,因此同一时期,因此相同的小时费率和计费目标)之间进行了 500 次销售,则将有 500 条不同的行将使用 INDEX和 MATCH 以从 TABLE1 中获得相同的小时费率和计费目标。这会导致大量重复计算和大量重复数据。

  • 数据透视表计算字段是否可以在其公式中使用 INDEX 和 MATCH?Excel这样做会更轻吗?

  • 另一种方法是在表 2 的底部为每个员工添加每年 12 行(每个月 1 行),我将在其中写下他们的小时费率和计费目标。这样,数据透视表就能够显示每个员工的每小时费率和计费目标。该解决方案可以工作,并且对于 Excel 来说会更轻,但它会在手动输入数据时产生出错的高风险。

我愿意接受包括 VBA 在内的所有建议!非常感谢您宝贵的时间!

编辑:公式

根据要求,这是我在 TABLE2 中的 INDEX AND MATCH 公式,并从 TABLE1 获取每小时费率:

=INDEX(TAB_Employee_Data[[#All];[Hourly_Rate]];MATCH([@[Date (Cell)]]; IF(TAB_Employee_Data[[#All];[Name]]=[@[Employee(Cell)]];TAB_Employee_Data[[#All];[First day of the period]]);1))

TAB_Employee_Data 是包含“TABLE1”的选项卡。我翻译了这些领域的名称,因为我所有的工作都是法语。

该公式执行以下操作:它在 TABLE1 中搜索员工的姓名,并在 TABLE2 中找到适合行日期的期间。此外,为了正常工作,我需要按时间顺序对 TABLE1 的行进行排序。

表格1 : 表格1

表 2: 表2

4

0 回答 0