我有一个Google电子表格,可以导入我的银行交易记录。 (这里的语言是荷兰语)
我将此公式放在单元格P2上,以便可以对交易进行分类。
=ArrayFormula(IFERROR(IFS(
E2:E="IOB";"Interne boekingen";
E2:E="GEA";"Geldautomaat";
REGEXMATCH(F2:F;Instellingen!$B$2);Instellingen!$A$2;
REGEXMATCH(F2:F;Instellingen!$B$3);Instellingen!$A$3;
REGEXMATCH(F2:F;Instellingen!$B$4);Instellingen!$A$4;
REGEXMATCH(F2:F;Instellingen!$B$5);Instellingen!$A$5;
REGEXMATCH(F2:F;Instellingen!$B$6);Instellingen!$A$6;
REGEXMATCH(F2:F;Instellingen!$B$7);Instellingen!$A$7;
REGEXMATCH(F2:F;Instellingen!$B$8);Instellingen!$A$8
);""))
所以在选项卡Instellingen(设置)中,我在$ B $ 2列中有正则表达式代码,在$ A $ 2列中有描述。
下一个正则表达式代码在instellingen!$ B $ 3中,描述在Instellingen!$ A $ 3中,依此类推。
我可以缩短这个公式吗?
这张纸上大约有2000行,所以这个公式很慢,我能以某种方式解决吗?
这是我的工作表的摘录版本:Sheet
您可以编辑工作表
答案 0 :(得分:1)
这可能不会更短,但会更快:
={"Alias"; ARRAYFORMULA(IF(LEN(A2:A);
IF(E2:E="IOB"; "Interne boekingen";
IF(E2:E="GEA"; "Geldautomaat";
IFERROR(VLOOKUP(IFERROR(REGEXEXTRACT(LOWER(F2:F);
REGEXEXTRACT(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(QUERY(LOWER(
SUBSTITUTE(Instellingen2!B2:B; " "; "♦"))&IF(LEN(Instellingen2!B2:B); "," ; )
; ; 999^99); ","; "|"); " "; ""); "♦"; " "); "(.*)\|$")));
QUERY(SPLIT(TRANSPOSE(SPLIT(QUERY(TRANSPOSE(QUERY("♂"&LOWER(TRIM(IFERROR(
SPLIT(Instellingen2!B2:B; ","))))&"♀"&Instellingen2!A2:A; ; 999^99)); ; 999^99);
"♂")); "♀"); "where Col2 is not null"; 0); 2; 0)))); ))}
,它还需要以这种方式列出项目: