【发布时间】:2018-06-19 13:49:09
【问题描述】:
我正在尝试在 Excel 中以数组格式使用 INDEX,但遇到了问题。
从这个问题:Return array from INDEX function?,似乎“INDEX(如 VLOOKUP)不返回值数组(某些复杂情况除外)”
所以我想知道有什么替代方案。
我正在尝试这样做:
=qlTimeSeries( ,
INDEX({39618,39619,39638,39639},{2,3,4}),
INDEX({18,19,38,39},{2,3,4})
)
并且 Index 没有返回一个数组。
任何其他想法如何获得我试图通过 INDEX({39618,39619,39638,39639},{2,3,4}) 获得的结果? 即从 {39618,39619,39638,39639} 得到 {39619,39638,39639} 回来?
注意:实际上,我的电子表格使用的是动态日期数组,而不是 INDEX({39618,39619,39638,39639},{2,3,4}),目标是删除数组的第一个元素 { 39618,39619,39638,39639} 这就是我使用 INDEX 的原因。
编辑:寻找避免使用 VBA 的解决方案
【问题讨论】:
-
如果日期在工作表中,您可以使用 INDEX 作为
ref开始和结束。比如:=INDEX(A:A,3):INDEX(A:A,7)将是范围 (A3:A7)。但是,如果值是在数组内部生成的,那么更改公式或使用 VBA 会更容易,因为您需要整个数组在公式中多次获取{39618,39619,39638,39639} -
日期不在工作表中,它们来自公式。我试图避免使用 VBA,只想使用公式来做到这一点。完整的公式是 INDEX(qlTimeSeriesDates(A1),ROW(INDIRECT("2:"&qlTimeSeriesSize(A1)))) 其中 A1 是一个句柄, ROW(INDIRECT("2:"&qlTimeSeriesSize(A1))) 只是 {2 ;3;4;...;N}
-
然后要么使用辅助单元格,要么使用完全不同的方法,或者使用 vba...
-
只有当订单总是像你的例子(
{smallest number, < x1 <, < x2 <, biggest number})时,你才能使用类似:SMALL({39618,39619,39638,39639},{2,3,4})... -
谢谢。我使用的第一个索引函数将始终是有序的(即 INDEX({39618,39619,39638,39639},{2,3,4})),但第二个(INDEX({18,19,38,39}, {2,3,4})) 不一定。不过,要提取的元素 {2,3,4} 将始终相同。
标签: excel excel-formula quantlib