jak*_*kub 14 split google-sheets array-formulas
当我使用时,为什么拆分公式不会扩展到整个列=arrayformula(split(input!G2:G, ","))?
我得到的结果只是输入!G2单元格,而不是G列中的其余单元格.其他公式=arrayformula(find(",", input!G2:G))似乎功能和扩展没有问题.
Ada*_*amL 18
现在,应用于垂直阵列的SPLIT可以正常工作.(2017年1月4日)
=ArrayFormula(SPLIT(input!G2:G,","))
或用于错误掩盖
=ArrayFormula(IFERROR(SPLIT(input!G2:G,",")))
注意:结果数组与SPLITted元素的最大数量一样宽.
(答案的其余部分不再适用,但保留用于...历史目的?)
这将被视为一个非常糟糕的答案,但是:它只是没有.
我怀疑它可能是因为它可能会产生锯齿状阵列(每行中不同数量的元素),这可能被认为是有问题的.但是,"阵列SPLIT"曾用于在Sheets的早期版本中"工作"(尽管有一个错误,它在数组的第一个元素上无法正常工作).
SPLIT并不是唯一一个不能在数组上迭代的函数(例如INDIRECT,INDEX,SUMIFS).
解决方法(2017年1月4日编辑):
=ArrayFormula(REGEXREPLACE(input!G2:G&REPT(",",6),REPT("([^,]*),",6)&",*","$"&COLUMN(OFFSET(A1,,,1,6))))
OFFSET中的6(A1 ,,, 1,6)和REPT函数确定SPLIT中的最大元素数.您可以注入一个表达式来计算数据列中的最大元素数,但是性能会受到更多影响.
另外,这里需要注意的是它只支持单个字符(在本例中为逗号)分割.
或者,您可以查看Google Apps脚本自定义功能.
之前的解决方法不再有效,因为REGEXEXTRACT似乎不再支持第二个参数的数组 - 无论如何都是2017年1月.
=ArrayFormula(IFERROR(REGEXEXTRACT(","&input!G2:G,"^"&REPT(",+[^,]+",COLUMN(OFFSET(A1,,,1,6))-1)&",+([^,]+)")))
您可以使用此脚本:
function better_split(col, separator) {
var new_col = [];
for (var r = 0; r < col.length; r++) {
if (col[r]) {
new_col.push(col[r][0].split(separator));
}
}
return new_col;
}
Run Code Online (Sandbox Code Playgroud)
像这样使用它(出于性能原因):
=better_split(filter(A2:A, len(A2:A)>0), "/")
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10776 次 |
| 最近记录: |