比较 table 中的 Excel 行

Compare Excel rows within a table

我有一个 Excel table(格式为 table 并命名为 "table 1")。所以 table 列的命名方式类似于 @LastName、@FirstName 等等。

此 table 包含有关人们何时参加研讨会的信息。他们可以参加多个研讨会,但也可以参加一个研讨会两次或更多次。

我现在想知道,最后一次约会是什么时候,一个人参加了一个特别的研讨会。 让我们举个例子:

Table:

@FirstName  @LastName @Seminar     @Date
Frank       Mayer     Workshop 1   2017/01/15
Frank       Mayer     Workshop 2   2019/05/27
Sabine      Adams     Workshop 1   2017/01/15
Volker      Mueller   Workshop 1   2017/01/15
Frank       Mayer     Workshop 1   2018/04/23

从这个简单的例子可以看出,Frank Mayer 参加了 Workshop 1 2 次。所有其他人只参加每个研讨会一次。 目标是列出姓名、研讨会和上次出席情况。所以最终列表应该是这样的:

@FirstName  @LastName @Seminar     @Date
Frank       Mayer     Workshop 2   2019/05/27
Sabine      Adams     Workshop 1   2017/01/15
Volker      Mueller   Workshop 1   2017/01/15
Frank       Mayer     Workshop 1   2018/04/23 

我真的不知道如何用Excel公式解决这个问题,因为不仅要比较日期,还要找到仅日期不同的复式。如果可能的话,我不想使用 VBA 编程。

你们有什么想法吗?我的 table 有 1500 行,所以手工操作不是一种选择...... 也许有办法用结果创建一个新的 sheet 或 table?

最好的问候 奥拉夫

有一千零一种方法可以做到这一点,您可能会惊讶地发现手动操作如此简单。

如果您要减少 table,意思是从 table 中删除行;那么你可以...

  1. 添加一个连接名字、姓氏和车间的辅助列。

  2. 然后按此列按日期递减值排序。

  3. 删除仅基于辅助列的重复项。

  4. 删除辅助列

  5. 按需要排序

诀窍在于排序。对辅助列进行排序,将每个研讨会的重复名称分组,并按递减值包括日期,以确保最新的位于顶部。因此,当您删除重复项时,第一次出现的将是最近的并且将被保留,但随后的条目将被删除。

更动态的方法

(即每次添加更多数据时您都不必经历整个过程。)

  1. 为每个单元格添加一个名称+姓氏+车间的辅助列,例如"ID"。使用 Concatenate=Name & Lastname & Workshop 合并
  2. 使用以下字段列表从您的 table 创建数据透视表 table:行:添加 "ID" ,值:添加 "Date" 并更改值字段设置(右击)到 "Max of Date"
  3. 记得在添加新数据时刷新数据透视表 table 或更改数据透视表设置以在打开工作簿时自动更新。

我建议您使用 "Subtotals" Excel 功能,选择 Max 功能。

您可能会遇到问题,因为您需要在对话框的第一个条目中提供一个单独的列,但这可以解决,创建一个额外的列,附加名字和姓氏,并基于您的(隐藏)专栏(对不起荷兰语,我没有英语 Excel):

可以使用基本搜索公式(MatchVLookup、...)找到其他列的相应条目。

我建议使用 PIVOT 作为最简单和最快的方法: