2013-01-21 33 views
2

我已經做了長時間的尋找,但沒有找到我要找的。也許有人可以幫忙嗎?ARRAYFORMULA在加入(谷歌電子表格)篩選器

我有這個公式在我的谷歌電子表格(我會在下面解釋它做什麼):

=Join(" ",FILTER(Sheet1!B:B;Sheet1!A:A=A1)) 

在表1是一個表:列A是第一個名稱(如「詹姆斯」)和B欄是一些評論(例如'頭痛')。詹姆斯(或任何其他人)可能有多行,每一行中都有不同的評論(例如,詹姆斯有兩排,一個說着'頭痛',另一個說'膝蓋疼痛'。)

在表2的A欄中,出現在Sheet1中的名稱列表(使用'= UNIQUE'公式)。 A1說'詹姆斯'。在B1單元格中輸入上面的公式。

結果是幾乎正是我想要的。它將詹姆斯的所有評論加入到一個單元格中,每個評論之間有一個空格「」。所以B1細胞的結果是:'頭痛膝蓋疼痛'。

然而,我必須這個公式拖動到下面的所有單元。有誰知道我怎樣才能使這就像我在過去使用的所有其他ArrayFormulas,其中將式自動填寫以下所有單元格?我曾嘗試將它作爲一個數組公式,但沒有成功。

我也一直在玩弄這個公式,給了我同樣的結果「頭痛膝蓋疼痛」,但公式​​仍然不會複製到下面的單元格。

=SUBSTITUTE(Arrayformula(concatenate(FILTER(Sheet1!B:B;Sheet1!A:A=A1)&" "; "|"));" |";"") 

如果有人知道如何做到這一點,我將非常感激,真的 - 你寶貴的幫助將非常感激。

感謝您的期待!

回答

2

它通常是有點複雜應用的聚合函數一樣CONCATENATE一行接一行。

=ArrayFormula(TRIM(TRANSPOSE(SPLIT(CONCATENATE(REPT(TRANSPOSE(Sheet1!B:B&" ");A:A=TRANSPOSE(Sheet1!A:A))&REPT(" "&CHAR(9);TRANSPOSE(ROW(Sheet1!A:A))=ROWS(Sheet1!A:A)));CHAR(9)))))

(編輯:道歉我還沒有機會測試錯誤/錯別字,將刪除此行,如果你能確認它的工作原理)

+0

Hi there,Your formula works perfect,thank you非常確實。當我在試驗時,我意識到我可以使用這個公式:= Join(「」,FILTER(Sheet1!B:B; Sheet1!A:A = A1))但我仍然無法將它變成數組公式。如果將這個數組公式簡單化,請讓我知道。否則,你已經給出的公式是好的,我完全滿意 - 我只是好奇,如果使用Join公式會更簡單!非常感謝。 – Vin

+0

再次問候,不幸的是,你的配方不像我第一次想到的那樣完美。它似乎工作正常,但是當我從表1中刪除一行時,公式失敗。它將整個列向下返回「 - 」。任何想法是什麼導致這個問題?謝謝 – Vin

0

我知道這個問題太舊的,但爲了解決這個問題,當刪除一條線時,您需要更改爲: = ArrayFormula(TRIM(TRANSPOSE(SPOSE(CONCATENATE(REPT(TRANSPOSE(Sheet1!B))filter A:A <>「」) = TRANSPOSE(Sheet1!A:A))& REPT(「」& CHAR(9); TRANSPOSE(ROW(Sheet1!A:A))= ROWS(Sheet1!A:A))); CHAR(9)))))