这是我在 Excel 表格(表 1)中的内容:
此表包含包含全年金额的期间列 (P1_val, ... P12_val) 以及另外 12 个其他列,其中包含基于某些公式的“是/否”值 (P1_YN, ... P12_YN)。为了解释我的挑战,我只使用了两列。 我想要实现的目标:
结果应该是一个过滤表,其中仅出现任何 _YN 列为“是”的行;当相应的 Px_YN 为“是”时,金额按原样显示,即如果 P1_YN = 是,则显示值,但如果 P2_YN = 否,则金额必须为 0 等。行本身显示为至少 1 个周期标记为是的。 我一直在尝试使用新的 FILTER() 函数来实现此功能,但这只能解决我的第一个挑战(即过滤表)。
为了解决另一个挑战,我一直在研究数组,但没有找到适用于多列的解决方案,只有这个:
=IF(ISNUMBER(MATCH(Table1[Period_YN];{"Yes"};0));Table1[Period_1_val];"0")
但这只显示 1 列,我需要显示完整的表格,以便我可以应用 FILTER(),或者相反(首先更改值,然后过滤)。
注意:我无法更改原始表格,因为其他报告需要金额。
我希望我解释得很好。
任何想法将不胜感激。
=LET(data,Table1,cntPeriods,2,
periodYN,CHOOSECOLS(data,SEQUENCE(,cntPeriods,2)),
yesOK,MAKEARRAY(ROWS(data),1,LAMBDA(r,c,OR(INDEX(periodYN,r)="yes"))),
periodValues,CHOOSECOLS(data,SEQUENCE(,cntPeriods,cntPeriods + 2)),
periodValuesX,periodValues * --(periodYN="yes"),
FILTER(HSTACK(CHOOSECOLS(data,1),periodYN,periodValuesX),yesOK))
您必须将
cntPeriods
调整为 12。
yesOK
创建一个数组,如果至少有一个周期设置为
true
,则返回 yes
--> 然后在最终过滤器中使用该数组。如果
periodValuesX
值是
periodYN
,则将值设置为 0,因为 no
返回 0,如果 --(periodYN="yes")
检查将返回 1。