如何使用 ARRAYFORMULA 在 Google 表格中的不同级别之间分配分层佣金?

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

我正在研究 Google Sheets 公式,以便在不同层级或级别之间分配佣金。我需要将产生的佣金金额分配给具有特定限制的四个层级:

•   Tier 1: 0 - 100,000 EUR
•   Tier 2: 100,000 - 150,000 EUR (max 50,000 EUR)
•   Tier 3: 150,000 - 200,000 EUR (max 50,000 EUR)
•   Tier 4: 200,000 EUR and above

这个想法是按顺序填充每一层。例如,如果佣金为 170,000 欧元,则第 1 级将需要 100,000 欧元,第 2 级将需要 50,000 欧元,第 3 级将需要 20,000 欧元,第 4 级将为空。

Example of Endresult

**我尝试过的: ** 我尝试使用带有 MIN、MAX 和基本算术运算的 ARRAYFORMULA 在这些层之间分配佣金。以下是我尝试过的方法:

1.  Basic allocation formula for each tier:
•   Tier 1: ARRAYFORMULA(MIN(100000; A2:A))
•   Tier 2: ARRAYFORMULA(MIN(50000; MAX(0; A2:A - 100000)))
•   Tier 3: ARRAYFORMULA(MIN(50000; MAX(0; A2:A - 150000)))
•   Tier 4: ARRAYFORMULA(MAX(0; A2:A - 200000))
2.  Adjusting the logic to ensure that the tiers are filled sequentially and correctly capped at their limits.

**我也尝试过这个公式: **

•   Tier 1: ARRAYFORMULA(MIN(100000; MAX(0; A2:A)))
•   Tier 2: ARRAYFORMULA(MIN(50000, MAX(0, A2:A - B2:B)))
•   Tier 3: ARRAYFORMULA(MIN(50000, MAX(0, A2:A - B2:B - C2:C)))
•   Tier 4: 200,000 EUR and above

但是,这些公式要么无法在各层之间正确分配金额,要么最终不会在单元格中填充任何值。

使用第一行所有 C:D 列中的公式,我有一个空字段或 50.000 €。 Arrayformula 也不适用于下一行。第一行是有效的。

google-sheets math google-sheets-formula
1个回答
0
投票

这是一个可能的解决方案:

=ARRAYFORMULA(REDUCE(TOROW(;1);
   MAP(B2:E2;LAMBDA(t;IFERROR(MMULT(SPLIT(SUBSTITUTE(t;".";);" €-");{-1;1});9^9)));
     LAMBDA(x;t;HSTACK(x;REDUCE(TOCOL(;1);
       IFERROR(REDUCE(TOCOL(A3:A;1);SEQUENCE(1;COLUMNS(x));LAMBDA(a;i;a-INDEX(x;;i)));TOCOL(A3:A;1));
       LAMBDA(a;c;LET(s;SUM(a);{a;IF(OR(c=0;s>=t);;IF(s+c>t;t-s;c))})))))))

enter image description here

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