2015-04-26 72 views
0

在谷歌電子表格中,我有一個彙總表是我從多頁紙張導入信息。我的一個過濾器的功能如下所示:使用多個濾波函數彈性

=過濾器(Sheet2的A14:A27,(Sheet2的K14:K27 = 「Y」)+(Sheet2的K14:K27 = 「R」))

我有一個像這樣的多個Filter函數。我面臨的問題是我必須爲此函數的結果分配靜態數量的行,但結果是非常動態的(可能是1行或甚至15行)。

我一直在尋找,但詳盡不可能發現一個好辦法,彈性做到這一點,使所有過濾功能的結果只是附加(含或許每一結果之間的空行/標題行)。

某人在其中一個論壇上給出的解決方案是給每個論壇分配靜態數量的行,並使用腳本來隱藏空行,這似乎不是一個非常乾淨的解決方案(但我可能需要回退)

而且,我想用的腳本,但如果我理解正確,腳本只能從菜單中的OnOpen,onEdit等「觸發」也可能不是很直觀的(人們必須重新加載電子表格看到任何變化在onOpen()等情況下)

使用自定義函數將再次導致相同的問題,因爲自定義函數運行在特定的單元格上(並且我們不知道哪個單元格,因爲我們試圖使這個動態IC)

高興聽到任何的想法!

+0

您可以只連接幾個過濾器操作的結果。例如(Sheet1!A14:A27,(Sheet1!K14:K27 =「Y」)+(Sheet1!K14:K27 =「R」))A1; Filter(Sheet2!A14:A27,(Sheet2!K14 :K27 =「Y」)+(Sheet2!K14:K27 =「R」))}'。 A1只是一個用於分離結果的空單元。 – SpiderPig

+0

btw。自定義函數可以在許多單元格上工作,並像Filter那樣返回許多單元格。 – SpiderPig

+0

謝謝SpiderPig!不知道!我想這一點(雖然它現在已經成爲過長給所有的串連,但將嘗試找到一種方法來modularise吧) – Anupam

回答

1

你應該總是通過單元格/區域你的工作就進入了自定義函數,而不是函數內閱讀。也儘量不要直接寫入,而是返回一個結果。這樣電子表格將自動更新並且不需要任何權限。 下面是一個例子

function myFilter(values1, values2) { 
    return values1.filter(function(v, i) { 
    return values2[i][0] === "Y" || values2[i][0] === "R"; 
    }); 
} 

,然後做

={myFilter(Sheet1!A14:A27,Sheet1!K14:K27);A1;myFilter(Sheet2!A14:A27,Sheet2!K14:K27)} 

仍然得到是有點長,但。但是,您也可以將中間結果保存在不同的單元格中,然後將結果結合在一起。或者編寫一個過濾函數,它可以將任意數量的範圍作爲參數。 你可以舉一些更多的例子來說明那些過濾功能的樣子。也許有更好的方法來模塊化/縮短它。