我可以缩短公式并使其更快吗?

时间:2019-05-15 05:38:44

标签: google-sheets array-formulas google-sheets-formula google-sheets-query gs-vlookup

我有一个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

  • “导入”标签是从银行导入的文本
  • 这里的Instellingen(设置)是带有描述的正则表达式代码
  • Overzicht(概述)是A1中的查询公式,G2具有数组公式

您可以编辑工作表

1 个答案:

答案 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)))); ))}

0

demo spreadsheet

,它还需要以这种方式列出项目:

0