实战问题
例如,我有一个从单元格 A2 开始的动态数组,所以 A2#。A2#数组填充A2:C50。
A2:A50 包含投资 1…10(投资 1;投资 2;投资 3 等)。B2:B50 包含日期,C2:C50 包含现金流量。
本质上,我想过滤动态数组 A2# 以便它只包含 Investment 1 但保留所有三列。在我使用动态数组的所有时间里,我通常只是最终选择 A:C 并执行 FILTER(A:C,(A:A=“Investment 1”) 但这不是最好的/唯一的选择… .
用例(如果有帮助):我的目标是使用如下所示计算每项投资的 XIRR。只是不是 50 行,而是数千,而不是 10 项投资,而是数百项:
=XIRR(FILTER(FILTER(A2#,{1,0,0}="投资 1"),{0,0,1}),FILTER(FILTER(A2#,{1,0,0}="投资1"),{0,1,0}))
解决方案
使用索引。同样使用LET,这样考虑到数据量大,FILTER只需要运行一次
=LET(
a, FILTER(A2#,INDEX(A2#,0,1)="Investment 1"),
XIRR(INDEX(a,0,3),INDEX(a,0,2)))
补充知识
LET函数是什么?
Excel LET 函数允许您在公式中定义命名变量。您可能希望这样做有两个主要原因:
(1) 通过消除冗余计算
本文探讨如何利用Excel的LET函数过滤动态数组,特别是在处理大量数据时提高性能。实战问题涉及根据动态数组A2#的第一列(投资名称)筛选出'Investment 1'的相关数据,同时保留所有三列。解决方案是使用LET函数结合INDEX进行过滤,避免了多次计算。补充介绍了LET函数的目的、返回值、参数和示例,强调其在简化复杂公式和提高效率上的作用。
订阅专栏 解锁全文
9819

被折叠的 条评论
为什么被折叠?



