如何根据产品查找行更改和查找date?

我试图想到一种根据两个标准来查看一组ID的方法,并拉出不同的date。

ID Date1 Date2 Product 101 1/1/2016 5/30/2016 Bond 101 1/1/2016 5/30/2016 Swap 101 1/1/2016 5/30/2016 Swap 201 2/28/2016 7/1/2016 Swap 201 2/28/2016 7/1/2016 Swap 201 2/28/2016 7/1/2016 Swap 

如果ColumnD是一个债券,获取相应的Date1,如果它是一个交换,获取相应的Date2。 问题是,我不得不寻找一个ID的变化,因为这是一个池,我想做一些查找,或索引/匹配,基于每个池。 每当身份证更改,我需要检查债券或交换,并select适当的date。

债券主要在这里,所以如果一个债券存在一个池,使用date1,如果没有债券的池,使用date2。

有人可以在这里给我一个build议吗?

@ dev1998的答案似乎是正确的,但并不能确保“债券”是主要的。 所以,如果你有交易在债券之前上市的情况下,它会失败。 不过,我不确定这是否会在您的特定数据集中发生。

所以,让我以一些假设开始我的答案:

  • 是指具有相同ID的所有项目。
  • 该表按IDsorting。
  • 在一个池中,Swap可以出现在Bond之前。
  • date1在游泳池内可能有所不同。
  • date2可能在游泳池内有所不同。
  • 如果池中有多个Bond,则使用最近(最大)的Date1。
  • 如果池中有多个Swap,请使用最近(最大)的Date2。

鉴于这些假设,我实际上会用三列公式,所以你最终会得到这样的结果:

在这里输入图像说明

这里是公式:

  • PrimaryProduct: =IF(A2<>A1,D2,IF(E1="Bond","Bond",D2)) (对于给定的池,这确保了Bond优先于Swap)
  • 主要date=IF(A2<>A1,IF(D2="Bond",B2,C2),IF(D2="Bond",IF(E1="Bond",MAX(B2,F1),B2),IF(E1="Bond",F1,MAX(C2,F1)))) (对于一个给定的池,这将确定所有Bond条目中的最大date,否则,它将取所有Swap条目中的最大date)
  • IsLastItemInPool: =A2<>A3 (简单地确定给定的项目是否是池中的最后一个 – 这是为了过滤目的)

为了执行你的分析,你应该复制公式,然后过滤IsLastItemInPool = TRUE表。

我假设“ID”在单元格A1中。 如果是的话把这个放在E3单元格中:

 =IF(A3<>A2,IF(D3="Bond",B3,C3),"Same ID") 

将公式从E3一直向下复制到数据的末尾。

该公式将检查该ID是否与上面的行中的ID不同。 那么它会看你是否有债券或交换。