![](/img/trans.png)
[英]Using CHOOSE and CONCATENATE with ARRAYFORMULA in Google Sheets
[英]Using ArrayFormula in Google Sheets to concatenate headers of non-blank columns
我想創建一個列,該列將在一個非空白范圍內列出列的標題(對於每一行)(如果相關,它們應該在其中包含日期 - 但在添加日期之前將保持空白列)。
我真的很希望使用 ArrayFormula (或類似的東西)自動填充這個,因為我的電子表格一直被添加到其中,而那些添加到它的人不太可能記得每次都傳播所有必要的公式。 我的假床單在這里。
E:G
列包含每個人/行的 A、B 和 C 事情發生的日期。 我想列出那個人發生的事情的列名。 但是我不知道如何使它忽略空白單元格。
將每個可能的空白單元格 + 非空白單元格組合組合起來實際上是不可能的,因為在真實的數據集中我有超過 3 個這樣的列,它們也將被添加到任意數量的列中。
您可以在 M 列中看到所需的 output(我手動輸入)。我在 P 和 Q 中的嘗試不足。我還沒有想出如何為一個單元格執行此操作,更不用說可以為我執行此操作的 ArrayFormula .
我想這可以使用 ArrayFormula 來完成,但我很高興接受其他同樣有效的解決方案。
我在您的電子表格中添加了一個新工作表(“Erik 幫助 - 問題 2”)。 以下公式位於單元格 M1 中,以綠色突出顯示:
=ArrayFormula({"contactedFor"; IF(A2:A="",, REGEXREPLACE(SUBSTITUTE(TRIM(TRANSPOSE(QUERY(TRANSPOSE(IF(E2:G="",, E1:G1&"|")), " ", COLUMNS(E1:G1)))), "|", ","), ",$", ""))})
這個公式利用了QUERY
處理標頭的方式中的一個怪癖(即,它允許多個標頭,而不僅僅是 0 或 1)。 因此,我們可以將 E:G 結果“堆疊”為標題, TRIM
掉空白,然后TRANSPOSE
它們轉置以匹配逐行結果。
我喜歡一個好問題。 有許多不同的方法可以解決這個問題,但我總是喜歡尋找一種方法來在數組中找到解決方案,這樣我就不必繼續復制公式。
=Array_Constrain(ArrayFormula(If(Right(if(E2:E <>"","A,",)&if(F2:F <>"","B,",)&if(G2:G <>"","C",))=",",regexreplace(if(E2:E <>"","A,",)&if(F2:F <>"","B,",)&if(G2:G <>"","C",), "(.),", "$1"),if(E2:E <>"","A,",)&if(F2:F <>"","B,",)&if(G2:G <>"","C",))),CountA(A2:A),1)
該數組將限制 A 列中包含字符串數據的總行數。添加新行時,公式將根據請求的條件自動填充。
更新:
要包括 header:
=Array_Constrain(ArrayFormula({"OneinaM"; If(Right(if(E2:E <>"","A,",)&if(F2:F <>"","B,",)&if(G2:G <>"","C",))=",",regexreplace(if(E2:E <>"","A,",)&if(F2:F <>"","B,",)&if(G2:G <>"","C",), "(.),", "$1"),if(E2:E <>"","A,",)&if(F2:F <>"","B,",)&if(G2:G <>"","C",))}),CountA(A:A),1)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.