2014-01-08 30 views
1

我在Google電子表格中放置了一個很長的電子表格。這個電子表格包含有關產品的信息,例如名稱,品牌,部件號等...我以前曾經幫助過,並給出了一些很好的解決方案,但我仍然遇到了限制。腳本:將多個單元格中的數據合併爲一個

我想要做的是根據其他單元格中的信息自動生成描述字段。

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

joinVals(E3:G3," x ")正在加入含長在一起的單獨列(E)寬度(F)高度(G)和所述值之間的增加的「x」。這導致了E架F×g的

這個腳本里工作,爲上述公式

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

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

不過,我不斷收到此錯誤「每秒調用腳本的次數過多,此谷歌用戶帳戶。」

我想知道如果我可以做這個數組來避免錯誤,因爲這個文檔包含1000多個行。 (A)產品名稱(B)尺寸(E x F x G)尺寸(K)

我應該運行一個ARRAY腳本嗎?

非常感謝大家,這個論壇一直都是這樣的幫助!

回答

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風格,可以編寫自定義Google Apps腳本時,也可以使用。當有(可以說)更簡單的內置解決方案(但肯定更快,方式更大的配額)時,我不認爲這是值得的。

+1

從第3行開始的數組公式解決方案只會在相應行的A列中存在某些內容時填充列:'= 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「,」「),))' – AdamL

+0

Thanks Adam。當我第一次看到你的配方時,我總會笑起來。然後有幾分鐘的時間,直到我明白它。很好的解決方案!我認爲我的新手版本更教學雖然:) –

+0

AdamL完美的作品。我也認爲這也適用於'=「品牌名稱」&「」&A3&「」&B3&「」&IF(E3 =「」,「」,E3&「''」&IF(AND(F3 =「」,G3 =「」 )和IF(F3 =「」,「」,F3&「''」&IF(G3 =「」,「」,「x」))&IF(G3 =「」,「」, G3&「''」)'你能解釋一下'&CHAR(9)&「」&K3:K,「(x \ t)| \ t」,「」),))嗎? – user2970972

相關問題