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的更新图片显示乱序结果
请让我知道,如果我可以澄清任何混淆。
如果您只需要返回每个句点(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)))
复制一列并在列表中。