我可以缩短这个公式并使其更快吗?
Can I shorten this formula and make it faster?
我有一个 Google Spreadsheet 可以导入我的银行交易。 (这里的语言是荷兰语)
我把这个公式放在单元格 P2 上,这样我就可以对交易进行分类。
=ArrayFormula(IFERROR(IFS(
E2:E="IOB";"Interne boekingen";
E2:E="GEA";"Geldautomaat";
REGEXMATCH(F2:F;Instellingen!$B);Instellingen!$A;
REGEXMATCH(F2:F;Instellingen!$B);Instellingen!$A;
REGEXMATCH(F2:F;Instellingen!$B);Instellingen!$A;
REGEXMATCH(F2:F;Instellingen!$B);Instellingen!$A;
REGEXMATCH(F2:F;Instellingen!$B);Instellingen!$A;
REGEXMATCH(F2:F;Instellingen!$B);Instellingen!$A;
REGEXMATCH(F2:F;Instellingen!$B);Instellingen!$A
);""))
所以在选项卡 Instellingen(设置)中,我在 col $B$2 中有正则表达式代码,在 col $A$2 中有描述。
下一个正则表达式代码在 instellingen!$B$3 中,说明在 Instellingen!$A$3 中,依此类推。
我可以缩短这个公式吗?
我在这个 sheet 上有大约 2000 行所以这个公式很慢,我能以某种方式解决这个问题吗?
这是我的 sheet 的精简版:Sheet
- 导入选项卡是从银行导入的文本
- Instellingen(settings) 这里是带描述的正则表达式代码
- Overzicht(概览)是A1中的查询公式,G2中有数组公式
您可以编辑 sheet 顺便说一下
这可能不会更短,但会更快:
={"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)))); ))}
demo spreadsheet
而且还需要这样列出项目:
我有一个 Google Spreadsheet 可以导入我的银行交易。 (这里的语言是荷兰语)
我把这个公式放在单元格 P2 上,这样我就可以对交易进行分类。
=ArrayFormula(IFERROR(IFS(
E2:E="IOB";"Interne boekingen";
E2:E="GEA";"Geldautomaat";
REGEXMATCH(F2:F;Instellingen!$B);Instellingen!$A;
REGEXMATCH(F2:F;Instellingen!$B);Instellingen!$A;
REGEXMATCH(F2:F;Instellingen!$B);Instellingen!$A;
REGEXMATCH(F2:F;Instellingen!$B);Instellingen!$A;
REGEXMATCH(F2:F;Instellingen!$B);Instellingen!$A;
REGEXMATCH(F2:F;Instellingen!$B);Instellingen!$A;
REGEXMATCH(F2:F;Instellingen!$B);Instellingen!$A
);""))
所以在选项卡 Instellingen(设置)中,我在 col $B$2 中有正则表达式代码,在 col $A$2 中有描述。
下一个正则表达式代码在 instellingen!$B$3 中,说明在 Instellingen!$A$3 中,依此类推。
我可以缩短这个公式吗?
我在这个 sheet 上有大约 2000 行所以这个公式很慢,我能以某种方式解决这个问题吗?
这是我的 sheet 的精简版:Sheet
- 导入选项卡是从银行导入的文本
- Instellingen(settings) 这里是带描述的正则表达式代码
- Overzicht(概览)是A1中的查询公式,G2中有数组公式
您可以编辑 sheet 顺便说一下
这可能不会更短,但会更快:
={"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)))); ))}
demo spreadsheet
而且还需要这样列出项目: