Excel公式或函数,从dynamic生成的单元格分组中返回第N个值

我试图组装一个索引/匹配组合,并且无法弄清楚如何使其工作。 我有很多excel中的公式types的经验,但不幸的是,我对这些函数很无知。

我会先解释一下我想做的事情,但最后我会附上3张图片,可能会让事情更加清晰。

为了确定我想要的特定值,我不得不使用帮助单元。 这些帮助单元在图片中用(帮助者)标记表示。 这些单元格经过并获取dynamic计算期间的开始(C列)和结束(D列)股票调整后的收盘价格(A列)。

我想在F和G列中将这些值合并为数字顺序。我们认为C / D中的第一个非零数字属于第一个预定义的时间段,应该进入#1(列E)。 这将在所有的时期进行(例如:第二个非零在第二个旁边,第三个非零在第三个旁边等)

这只是一个股票的例子。 我需要这个函数或公式足够dynamic来处理各种各样的分布。 有时在股票分析中有多达100个dynamic计算的时期。

下面是应该提供更清晰的图像

图1是数据外观的一个例子

图2是我想如何移动数据的粗略示例

图片3是所需的结果

图片1 数据的例子

图片2 移动数据

图片3 结果

Scott Craner的更新图片显示乱序结果 对于Scott Craner

请让我知道,如果我可以澄清任何混淆。

如果您只需要返回每个句点(C列)的第一个值和每个句点的最后一个值(D列),则可以使用索引匹配和查找来完成此操作,而无需使用帮助程序列。

尝试在单元格F2中

=INDEX(A2:A50,MATCH(E2,B2:B50,0)) 

而这在G2中

 =LOOKUP(E2,B2:B50,A2:A50) 

根据您的整体行数差异很大,您可以在公式中使用间接引用来dynamic更新范围。 例:

 =INDEX(A2:INDIRECT("A"&COUNTA(A:A)),MATCH(E2,B2:INDIRECT("B"&COUNTA(A:A)),0)) 

你将需要打开macros。 然后在logging的macros中执行以下操作。 +只在C / D中过滤非空值+在C / D中select整个列,然后复制整个列+closuresfilter+在F / G中粘贴整个C / D +停止macros

好运

把这个公式如果F2:

 =INDEX(INDEX(C:C,MATCH($E2,$B:$B,0)):INDEX(C:C,MATCH($E2,$B:$B,0)+COUNTIF($B:$B,$E2)-1),MATCH(1E+99,INDEX(C:C,MATCH($E2,$B:$B,0)):INDEX(C:C,MATCH($E2,$B:$B,0)+COUNTIF($B:$B,$E2)-1))) 

复制一列并在列表中。

在这里输入图像说明