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

时间:2016-01-26 01:59:52

标签: excel

我正在考虑一种查看ID组并根据两个标准提取不同日期的方法。

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是Bond,则获取相应的Date1,如果是Swap,则获取相应的Date2。问题是,我必须寻找ID的更改,因为这是一个池,我想根据每个池进行一些查找或索引/匹配。每当ID发生变化时,我都需要检查Bond或Swap,并选择合适的日期。

Bond是主要的,所以如果池中存在Bond,请使用Date1,如果池没有Bond,请使用Date2。

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

2 个答案:

答案 0 :(得分:1)

@ dev1998的答案似乎在正确的轨道上,但它并不能确保“邦德”是主要的。因此,如果您有在Bond之前列出Swap的情况,则会失败。我不确定这是否会在您的特定数据集中发生。

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

  • 指的是具有相同ID的所有项目。
  • 该表按ID排序。
  • 在游泳池内,Swap可以出现在Bond之前。
  • 日期1可能会在游泳池中有所不同。
  • 日期2可能会在游泳池中有所不同。
  • 如果池中有多个Bond,请使用最新(最大)Date1。
  • 如果池中有多个Swap,请使用最新(最大)Date2。

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

enter image description here

以下是公式:

  • PrimaryProduct:=IF(A2<>A1,D2,IF(E1="Bond","Bond",D2))(对于给定的池,这可确保Bond优先于Swap)
  • 主要日期:=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条目中的最大日期(如果存在),否则,它将占用所有Swap条目中的最大日期)
  • IsLastItemInPool:=A2<>A3(只是确定给定的项目是否是池中的最后一项 - 这是用于过滤目的)

要执行分析,您应该复制公式,然后在IsLastItemInPool = TRUE上过滤表格。

答案 1 :(得分:0)

我假设“ID”在单元格A1中。如果是,那么把它放在单元格E3中:

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

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

公式将检查ID是否与其上方行中的ID不同。然后它会看你是否有债券或掉期。