Database 组中第一个/最后一个日期的不同值

Database 组中第一个/最后一个日期的不同值,database,vba,excel,pivot-table,Database,Vba,Excel,Pivot Table,我有以下格式的数据,在A列中有唯一ID,但这些ID可能出现在多行上,表示针对该个人的重复交易。在B栏中,我有该笔交易的日期戳,在C栏中,我有该笔交易的名称 Col A Col B Col C ABC1 15/02/2018 16:26 Apple ABC1 14/02/2018 11:26 Pear ABC1 13/02/2018 09:11 Pear ABC2 15/

我有以下格式的数据,在A列中有唯一ID,但这些ID可能出现在多行上,表示针对该个人的重复交易。在B栏中,我有该笔交易的日期戳,在C栏中,我有该笔交易的名称

Col A      Col B                  Col C
ABC1       15/02/2018 16:26       Apple
ABC1       14/02/2018 11:26       Pear
ABC1       13/02/2018 09:11       Pear
ABC2       15/02/2018 16:26       Orange
ABC2       14/02/2018 11:26       Pear
ABC2       13/02/2018 09:11       Apple
ABC3       15/02/2018 16:26       Grape
ABC3       14/02/2018 11:26       Orange
ABC3       13/02/2018 09:11       Apple
我试图用日期戳上的MIN和MAX标准来透视这些数据,以获得有多少记录将C列中的哪个事务作为他们的第一个事务,有多少记录将C列中的X事务作为他们的最新事务等,目的是最终确定类似这样的数据

最小(第一)笔交易:

Distinct Count Col A    Col C
1                       Pear
2                       Apple  
Distinct Count Col A    Col C
1                       Grape
1                       Orange
1                       Apple
最大(上次)交易量:

Distinct Count Col A    Col C
1                       Pear
2                       Apple  
Distinct Count Col A    Col C
1                       Grape
1                       Orange
1                       Apple
有没有一种方法可以处理我丢失的透视表?我在这里处理数百万行数据,因此通过枢轴操作比使用公式或其他方法更容易(通过power query加载数据)。如果需要,我可以在加载过程中连接列


提前感谢您的帮助。

使用帮助列,因为这将允许您使用最大和最小页面过滤器,而不是依赖于对每个有问题的列进行排序

将数据设置为表格。然后添加一个最大列和一个最小列

最大列公式:

=IF([@[Col B]]=MAX([Col B]),1,0)
=IF([@[Col B]]=MIN([Col B]),1,0)
最小列公式:

=IF([@[Col B]]=MAX([Col B]),1,0)
=IF([@[Col B]]=MIN([Col B]),1,0)
创建两个枢轴。1表示最大值,1表示最小值,并将最大值或最小值放入页面字段中,并在1上过滤(即日期是源值的最大值或最小值)

按列C(水果名称列)的列数对列C进行排序,您可以选择任何合适的方式。如果您对最小日期计数最小的水果感兴趣,则升为最小值

最后结果:

您始终可以删除不需要的字段,例如B列,以获得完全相同的外观:

编辑: 如果您想按ID显示每个水果的计数,对于该ID的最短日期,您可以使用查找表透视

每个ID的最小值的查找表透视示例

然后在源表的帮助器列中引用此表,使用索引匹配检索最小日期,并与数据表中相同ID的日期进行比较:

助手列中的公式(
MinMatch
):

注意:如果您创建了一个ID&Fruit的唯一键,并根据该键进行查找,这将容易得多

辅助列公式为:

=IFERROR(IF([@[Col B]]=INDEX(LookupMin!$A:$E,MATCH([@[Col A]],LookupMin!$A:$A,0),MATCH([@[Col C]],LookupMin!$4:$4)),1,0),"")
LookupMin
!是中具有最小轴的板材

请注意,我在数据表上使用了一个透视图,以查看每个ID的最小日期上每个水果的计数

你可以用一个公式来代替,但是你会有重复的总和,例如,见F列

E中的公式(然后向下拖动):

最后,如果您决定想要ID和水果的最早日期,您可以按如下方式更改查找:


这是一个创造性的解决方案,感谢您抽出时间回答我的问题。事实上,对于我的数据,我在A列中有数十万个不同的ID,在B列中有数百万个时间戳,因此这样的结果轴仍然太大。有没有办法通过在C列上旋转最终结果来重做这一点,因为只有大约20个“水果”。我需要基于每个唯一ID的最小和最大公式,例如,某种max if语句,其中我相信该记录ID的最高或最低日期时间值。这将是在power query级别添加的一个帮助器列,因此我可以快速将其应用于1200万行。您显示的输出不是基于唯一ID,但我已在最后用编辑更新了我的答案。抱歉,我现在没时间再整理了。最大过程与最小过程相同。