我正在尝试在 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
表的描述列中包含的单词,而不需要匹配整个描述。
尝试:
=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))))
如前所述,您的规则表不足,因此结果将是:
=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"))