我有一个电子表格,看起来像这样:
Comp Fund Date Value
A X 30/09/2022 12
B X 30/09/2022 15
E X 30/09/2022 31
A X 31/12/2022 10
B X 31/12/2022 20
C X 31/12/2022 15
D Y 31/12/2022 22
我需要输出,使用公式(不是宏,也不是过滤器,也不是手动数据操作),所有的公司和基金的组合和价值,为一个预先确定的日期。如果没有这样的日期条目,则值应为零。
例如,对于所选日期31/12/2022(例如,在单元格F1中),输出应为
Comp Fund Value
E X 0
A X 10
B X 20
C X 15
D Y 22
我尝试使用Comp和Fund的独特组合,但效果不理想。
3条答案
按热度按时间7tofc5zh1#
您可以尝试使用
HSTACK()
和BYROW()
函数的组合,如下所示:·单元格
G4
中使用的公式使用希腊字母的想法取自**Jos Woolley先生,我发现它看起来很酷,同时为计算结果和变量分配名称。
lzfw57am2#
另一种选择是使用MMULT,因此不需要lambda迭代:
mm
检查列A和B中的值是否等于这两列的唯一版本的值,并在列C中具有正确的日期值v
。如果是,则对满足这些条件的列D的值求和。结果与列A和B的唯一值连接(堆叠):HSTACK(ua,in,mm)
改进为更短的HSTACK(ab,mm)
*5ssjco0h3#
这里是另一种方法,它假设对于给定的查找日期(
lk
),Comp和Fund列值的唯一组合不超过一个,就像在问题的示例中一样。注意:由于我们只考虑两列的唯一元素,因此您可以将
SEQUENCE
调用替换为:{1;1}
,如果你喜欢,可以得到一个更短的公式。您可以避免使用
MMULT
向FILTER
添加附加条件,如下所示:下面是输出:
基本上在第一个公式中,它首先找到唯一的前两列(
abUx
),然后使用BYROW
迭代abUx
元素。在每次迭代中,我们使用FILTER
来选择满足所有条件的值,即匹配唯一元素(x
)加上查找日期(lk
)的所有值。我们使用MMULT
来匹配x
的两个唯一值,因为它是一个与条件,我们等于2
。如果过滤器输出为空,则返回0
。剩下的就是使用HSTACK
和VSTACK
来适应输出。