使用 REGEXMATCH 替代 FILTER 以获得有效的数组公式
Alternative to FILTER with REGEXMATCH to get a working arrayformula
有没有办法让下面的内容在 Google 表格中用作数组公式?它在每一行中都可以正常使用,但是对于 1k+ 行数据,sheet 变得非常慢。
=FILTER( L:L, J:J=A2, REGEXMATCH(K:K, B2))
据我目前所知,过滤器通常不适用于数组,因此欢迎使用任何其他替代方法。到目前为止,我无法找到任何适用于 regexmatch 函数的解决方案。这里是EXAMPLE SHEET,所以你可以看到数据。
因为您需要 return 个数字,所以可以使用单个公式完成求和:
=MMULT(ArrayFormula(--(A2:A13=TRANSPOSE(K1:K7))*
--(REGEXMATCH(TRANSPOSE(L1:L7),B2:B13))),M1:M7)
要使此公式适用于不同的数组,请使用以下结构:
A2:A13
→offset(A2,,,counta(A2:A))
B2:B13
→offset(B2,,,counta(A2:A))
K1:K7
→offset(K1,,,counta(K1:K))
L1:L7
→offset(L1,,,counta(K1:K))
M1:M7
→offset(M1,,,counta(K1:K))
我不确定,它会加快您的计算速度。但是这个公式比较好用(不需要往下拖)。您也可以使用脚本计算公式,然后将公式结果复制为值。
有没有办法让下面的内容在 Google 表格中用作数组公式?它在每一行中都可以正常使用,但是对于 1k+ 行数据,sheet 变得非常慢。
=FILTER( L:L, J:J=A2, REGEXMATCH(K:K, B2))
据我目前所知,过滤器通常不适用于数组,因此欢迎使用任何其他替代方法。到目前为止,我无法找到任何适用于 regexmatch 函数的解决方案。这里是EXAMPLE SHEET,所以你可以看到数据。
因为您需要 return 个数字,所以可以使用单个公式完成求和:
=MMULT(ArrayFormula(--(A2:A13=TRANSPOSE(K1:K7))*
--(REGEXMATCH(TRANSPOSE(L1:L7),B2:B13))),M1:M7)
要使此公式适用于不同的数组,请使用以下结构:
A2:A13
→offset(A2,,,counta(A2:A))
B2:B13
→offset(B2,,,counta(A2:A))
K1:K7
→offset(K1,,,counta(K1:K))
L1:L7
→offset(L1,,,counta(K1:K))
M1:M7
→offset(M1,,,counta(K1:K))
我不确定,它会加快您的计算速度。但是这个公式比较好用(不需要往下拖)。您也可以使用脚本计算公式,然后将公式结果复制为值。