如何根据产品查找行更改和查找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不同。 那么它会看你是否有债券或交换。