1

我在谷歌电子表格中整理了一个很长的电子表格。此电子表格包含有关产品的信息,例如名称、品牌、零件编号等……我之前得到了帮助并给出了一些不错的解决方案,但我仍然遇到了限制。

我要做的是根据其他单元格中的信息自动生成一个描述字段。

我在描述栏中使用的公式是="Brand Name"&" "&A3&" "&B3&" "&(joinVals(E3:G3," x "))&" "&K3

joinVals(E3:G3," x ")将包含长度(E)宽度(F)高度(G)的单独列连接在一起并在值之间添加“x”。这导致 E x F x G

此脚本适用于上述公式

function joinVals( rangeValues, separator ) {
function notBlank(element) {return element != '';}

return rangeValues[0].filter(notBlank).join(separator);
}

但是我不断收到此错误

每秒为此 Google 用户帐户调用的脚本次数过多。

我想知道我是否可以将其作为数组来避免错误,因为该文档包含 1000 多个 ROWS。

当一切都说完了,我想要实现的结果应该是这样的“品牌名称”零件编号(A)产品名称(B)尺寸(E x F x G)尺寸(K)

我应该运行 ARRAY 脚本吗?

非常感谢大家,这个论坛对我很有帮助!

4

1 回答 1

1

可以使用 Array 解决方案,但您必须更改很多在电子表格中使用公式的方式。最简单的解决方案是直接使用内置的电子表格公式。无需为此使用自定义 Apps 脚本公式。

="Brand Name"&" "&A3&" "&B3&" "&(join(" x ";filter(E3:G3;E3:G3<>"")))&" "&K3

正如评论中的AdamL所示,这是一个ArrayFormula仅使用内置公式的解决方案。

=ArrayFormula(IF(LEN(A3:A),REGEXREPLACE("Brand Name "&A3:A&" "&B3:B&" "&REPT(E3:E&" x ",E3:E<>"")&REPT(F3:F&" x ",F3:F<>"")&REPT(G3:G&" x ",G3:G<>"")&CHAR(9)&" "&K3:K,"( x \t)|\t",""),))

正如我所说, ArrayFormula在编写自定义 Apps 脚本时也可以使用这种解决方案。当有(可以说)更简单的内置解决方案(但肯定更快,更大的配额)时,我只是不认为这是值得的。

于 2014-01-08T22:18:11.397 回答