arrayformula() 内 if() 语句的多个实例

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

我正在尝试在 Google 表格中创建一个公式,该公式根据我在另一张表格中的规则来评估表格中的每一行。

rules
工作表中的每一行都应被视为规则。但是,我当前的公式仅返回满足规则条件的第一个实例,而不是匹配条件的所有实例。我尝试了各种方法但没有取得进展。

每个规则都有多个条件,如果满足规则的所有条件,则应返回

rules!G3:G
中的相应值。

“规则”表:

规则ID 账户状况 描述包含 类别条件 最低金额 最大金额 结果
2 账户1 任何 任何 任何 任何 测试1
1 任何 租金 任何 500 2200 租金
3 账户2 娱乐 任何 任何 任何 测试2
4 账户2 公用事业 任何 任何 任何 测试3

主表:

唯一ID 日期 账户 描述 类别 金额 账号密钥
ID1 2024 年 1 月 1 日 账户1 缴纳租金 租金 -1500 账户1
ID2 2024 年 1 月 2 日 账户2 其他付款 其他 -100 账户2
ID3 2024 年 1 月 3 日 账户1 再次付款 另一个类别 -200 账户1
ID4 2024 年 1 月 4 日 账户2 付款方式不同 不同类别 -300 账户2
ID5 2024 年 1 月 5 日 账户2 娱乐服务 另一个类别 -400 账户2
ID6 2024 年 1 月 5 日 账户2 城市公用事业 另一个类别 -401 账户2

这是所需的输出:

结果
租金
测试2
测试1
测试2
测试2

奖励,我很想扩展这个公式,以便能够搜索

rules
表的描述列中包含的单词,而不需要匹配整个描述。

if-statement google-sheets
1个回答
0
投票

尝试:

=INDEX(IFNA(IF(REGEXMATCH(D3:D, "(?i)"&rules!C3)*(-F3:F>rules!E3)*(-F3:F<rules!F3), 
 rules!G3, VLOOKUP(C3:C, rules!B3:G, 6, 0))))

enter image description here


更新

如前所述,您的规则表不足,因此结果将是:

=ARRAYFORMULA(IFNA(IF(REGEXMATCH(D9:D14&E9:E14, "Rent")*
 (-F9:F14>=VLOOKUP("Rent", C2:G5, 3, 0))*
 (-F9:F14< VLOOKUP("Rent", C2:G5, 4, 0)), VLOOKUP("Rent", C2:G5, 5, 0), VLOOKUP(C9:C14&
 IFNA(REGEXEXTRACT(D9:D14, TEXTJOIN("|", 1, FILTER(C2:C5, C2:C5<>"Any"))))&
 IFNA(REGEXEXTRACT(E9:E14, TEXTJOIN("|", 1, FILTER(D2:D5, D2:D5<>"Any")))), 
 {B2:B5&SUBSTITUTE(C2:C5, "Any", )&SUBSTITUTE(D2:D5, "Any", ), G2:G5}, 2, 0)), "rule not defined"))

enter image description here

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