总结
在 Excel 365 中:
- 为什么的第二个参数中的 0 不会返回所有行,而和
INDEX(A1#,0,{1,3})
中的每一行都返回?INDEX(A1#,0,1)
INDEX(A1#,0,3)
- 是否有一个规范的方法来实现这一点?
细节
假设我有一个以 为根的动态数组A1
。如果我想要第一列,所有行,我可以这样写:
=INDEX(A1#,0,1)
其中第二个参数中的 0 表示“所有行”指示符。同样,如果我想要第 3 列,我可以这样写:
=INDEX(A1#,0,3)
如果我想两个都第一列和第三列,我希望能够写入:
=INDEX(A1#,0,{1,3})
但这并没有给出我所期望的结果。它确实给出了第一列和第三列,但只有第一个排也就是说,它给出的结果与以下内容完全相同:
=INDEX(A1#,1,{1,3})
为了得到我想要的结果,我需要让第二个参数提及每个所需的行。因此,例如,我经常发现自己在做这样的事情:
=INDEX(A1#,SEQUENCE(ROWS(A1#)),{1,3})
这是可行的,但是有点冗长。
我是不是漏掉了什么?有没有更简洁的方式来指定“所有行”,就像0
只要求一列时那样?
接下来是:有人可以解释一下吗为什么他们可能会把它建造成这样吗?它似乎破坏了正交性,但这可能只是我的看法。
PS我知道完全执行这种多不连续列切片操作的其他方法。例如:
= HSTACK(INDEX(A1#,0,1),INDEX(A1#,0,3))
但这并不比该方法简洁多少SEQUENCE()
。
答案1
是否有一个规范的方法来实现这一点?
正如 gns100 评论的那样,在 Excel365 中您可以使用=choosecols(A1#,1,3)
。
不幸的是,早期版本中没有好的解决方案。
为什么的第二个参数中的 0 不会返回所有行,而和
INDEX(A1#,0,{1,3})
中的每一行都返回?INDEX(A1#,0,1)
INDEX(A1#,0,3)
查看输出=INDEX(A1#,{1,4},{2,4})
可能有助于了解情况:
它不返回(第 1 行和第 4 行)和(第 2 列和第 4 列)的交点,而是给出坐标 1,2 和 4,4 的值;因此当您提供两个列表时,它会首先将它们转换为坐标。
至于为什么使用时它只返回第一行的值0
,可能是因为 Excel0
在后台转换为列表的方式。