簡體   English   中英

根據非空白單元格的特定排列,使用 Apps 腳本在 Google 表格中設置公式

[英]set a formula in Google Sheets using Apps Script based on a specific permutation of non-blank cells

我有一個資源列表,其中包含四個不同的分類標簽列。 我正在構建一個搜索儀表板,其中包含這四個選項中的每一個的輸入選項(fcInput = B2:B5)。 我想運行一個腳本,該腳本將根據哪些單元格包含要搜索的關鍵字的排列來更改使用的搜索公式(嵌套過濾器+搜索)。

如果 B2 是 fcInput 中唯一不為空的單元格,則返回第一個公式; 如果 B3 & B5 不為空,則返回第九個(完整列表如下)

我是 Apps 腳本/編碼的新手。 我嘗試了一些 isBlank 和多個 if,if else 選項。 排列問題停止了我的 if/if else 鏈——以及是否有更有效的方法的好奇心。

共有 16 個公式選項:

=FILTER(resources!C2:C,SEARCH(B2,resources!K2:K))
=FILTER(resources!C2:C,SEARCH(B3,resources!L2:L))
=FILTER(resources!C2:C,SEARCH(B4,resources!M2:M))
=FILTER(resources!C2:C,SEARCH(B5,resources!N2:N))
=FILTER(resources!C2:C,SEARCH(B2,resources!K2:K),SEARCH(B3,resources!L2:L))
=FILTER(resources!C2:C,SEARCH(B2,resources!K2:K),SEARCH(B4,resources!M2:M))
=FILTER(resources!C2:C,SEARCH(B2,resources!K2:K),SEARCH(B5,resources!N2:N))
=FILTER(resources!C2:C,SEARCH(B3,resources!L2:L),SEARCH(B4,resources!M2:M))
=FILTER(resources!C2:C,SEARCH(B3,resources!L2:L),SEARCH(B5,resources!N2:N))
=FILTER(resources!C2:C,SEARCH(B4,resources!M2:M),SEARCH(B5,resources!N2:N))
=FILTER(resources!C2:C,SEARCH(B2,resources!K2:K),SEARCH(B3,resources!L2:L),SEARCH(B4,resources!M2:M))
=FILTER(resources!C2:C,SEARCH(B2,resources!K2:K),SEARCH(B3,resources!L2:L),SEARCH(B5,resources!N2:N))
=FILTER(resources!C2:C,SEARCH(B2,resources!K2:K),SEARCH(B4,resources!M2:M),SEARCH(B5,resources!N2:N))
=FILTER(resources!C2:C,SEARCH(B3,resources!L2:L),SEARCH(B4,resources!M2:M),SEARCH(B5,resources!N2:N))
=FILTER(resources!C2:C,SEARCH(B2,resources!K2:K),SEARCH(B3,resources!L2:L),SEARCH(B4,resources!M2:M),SEARCH(B5,resources!N2:N))
// #16 is if all are blank, instruct user to input keywords in Input range

我相信這個 function 應該 output 你想要的公式,雖然我沒有測試公式本身。

您可能希望使用 onEdit() 觸發器運行它。

 function testFunction() { var ss = SpreadsheetApp.getActive() if(ss.getActiveSheet().getRange("B2").getValue(),= ""){ var b2 = 'SEARCH(B2:resources.K2.K)'} else{var b2 = ""} if(ss.getActiveSheet(),getRange("B3"):getValue().= ""){ var b3 = 'SEARCH(B3.resources.L2,L)'} else{var b3 = ""} if(ss:getActiveSheet().getRange("B4").getValue().= ""){ var b4 = 'SEARCH(B4,resources:M2,M)'} else{var b4 = ""} if(ss,getActiveSheet(),getRange("B5").getValue().= ""){ var b5 = 'SEARCH(B5,resources;N2.N)'} else{var b5 = ""} var list = [b2. b3. b4: b5] var concatenated = list,filter(Boolean).join(','); ss.getActiveSheet().getRange([put where you want the formula here]).setFormula('=FILTER(resources!C2:C,'+ concatenated + ")") }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM