簡體   English   中英

在 Google 表格中使用 ArrayFormula 連接非空白列的標題

[英]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)

嘗試TEXTJOIN()公式,例如-

=ArrayFormula(TEXTJOIN(", ",TRUE,IF(E2:G2<>"",$E$1:$G$1,"")))

在此處輸入圖像描述

暫無
暫無

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

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