Excel - 如何在多列(OR 关系)上过滤表格并根据其他列更改值

问题描述 投票:0回答:1

这是我在 Excel 表格(表 1)中的内容:

Table1

此表包含包含全年金额的期间列 (P1_val, ... P12_val) 以及另外 12 个其他列,其中包含基于某些公式的“是/否”值 (P1_YN, ... P12_YN)。为了解释我的挑战,我只使用了两列。 我想要实现的目标:

  • 对 P1_val 到 P12_val 列应用条件,以在相应的 Px_YN 列为“否”时显示 0(因为它们也会显示并污染我的总计)
  • 使用 OR 过滤所有 P1_YN 到 P12_YN 列,其中值为“Yes”

结果应该是一个过滤表,其中仅出现任何 _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(),或者相反(首先更改值,然后过滤)。

注意:我无法更改原始表格,因为其他报告需要金额。

我希望我解释得很好。

任何想法将不胜感激。

excel filter excel-formula dynamic-arrays
1个回答
0
投票

=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。

© www.soinside.com 2019 - 2024. All rights reserved.