2016-09-11 35 views
1

我有這樣的桌子。在現實生活中,它將有超過1000行。ARRAYFORMULA帶過濾器和CONCATENATE裏面

 
Client | Group 
-------------- 
Merry | A 
Merry | C 
Susan | B 
Mike | C 
Susan | A 
Joe | A 
Tom | B 
Tom | C 

而且我列出了所有從Google Form填充的客戶端。我想在第一行中僅使用arrayformula來填充組列。我所需的輸出是這樣的:

 
Name | Groups 
---------------- 
Joe  | A 
Tom  | B, C 
Mike | C 
Merry | A, C 
Susan | A, B 
Peter | 

我的最好成績又是這樣的:

 
Name | Groups | | | | | | | | 
---------------------------------------------- 
Joe  |  | | | | | A | | | 
Tom  |  | | | | | | B | C | 
Mike |  | | | C | | | | | 
Merry | A | C | | | | | | | 
Susan |  | | B | | A | | | | 
Peter |  | | | | | | | | 

看起來它我想要做什麼,但我不能將所有這些列連接成一個。公式爲:

= ARRAYFORMULA(IF(名稱<> 「」; IF(名稱= TRANSPOSE(FILTER(客戶端; LEN(客戶端))); TRANSPOSE(FILTER(基; LEN(組))); );))

根據列標題,我使用「名稱」,「客戶端」和「組」作爲命名範圍。

樣紙是在這裏(僅供查看): https://docs.google.com/spreadsheets/d/1VFnmyDTQhlCaANAvkzLgzKRKchPsGzFn4hDZYOoJF_M/edit?usp=sharing

+0

而不是共享與編輯谷歌的工作表的電子表格任何人的權限,只有分享它的觀點,以確保讀者將看到原來的電子表格。指定的範圍未在共享電子表格中設置。 –

+0

您的解決方案非常棒,我可以將您的配方與我的配方結合起來,即使在大數據集中也可以使用一個配方單元獲得所需的結果。如果組名有自己的空間,是否有優雅的解決方法?在這種情況下,您的公式用逗號替換每個空格。我可以解決它在其他選項卡中爲每個組名添加分隔符,但它非常難看我不想讓你看到它:) –

+0

如果您的組名稱中有空格,請使用&運算符連接分隔符。如果您需要更多詳細信息,請將您的後續問題作爲新問題發佈。 –

回答

0

考慮到「最好的結果」是H3:O8在此時鏈接的電子表格。

以下公式返回所需的結果:

=ArrayFormula(substitute(transpose(trim(query(transpose(H3:O8);"select *";ROWS(A:A))));" ";",")) 

說明

QUERY串接的行值由一個空格字符分隔。上面的公式使用這個特性來連接到目前爲止由OP獲得的結果,然後TRIM用於刪除多餘的空格,用SUBSTITUTE用逗號替換剩餘的空格。

+0

它像我期望的那樣工作,非常感謝你!我的最終公式是: '= ArrayFormula(轉置(修剪(查詢(轉置(ArrayFormula(IF(名稱=>轉置(過濾器(客戶端; len(客戶端)));轉置(CHAR 10)&filter(group; len(group))););)));「select *」; ROWS(client)))))' –

1

除了魯本的解決方案,也儘量

=arrayformula(regexreplace({ unique(A3:A), trim(transpose(query(if((transpose(unique(A3:A)) = A3:A) * len(A3:A), B3:B & ",",), "select *", 50000))) }, ",$", "")) 

注:這取決於你語言環境,您可能需要使用這個公式來代替:

=arrayformula(regexreplace({ unique(A3:A)\ trim(transpose(query(if((transpose(unique(A3:A)) = A3:A) * len(A3:A); B3:B & ",";); "select *"; 50000))) }; ",$"; "")) 
+1

謝謝JPV!你的公式給了我很好的報告,但在我的情況下名稱列是恆定的,我只能觸摸組列。 如果你不難給你提供方向,我可以在哪裏閱讀有關ARRAYFORMULA的高級用法。我爲我的問題找到了解決方案,但仍然無法圍繞在ARRAYFORMULA中使用ROWS或LEN函數。 –