簡體   English   中英

如果滿足單元格值的條件,則返回所有對行/列的列表

[英]Return a list of all pairs row/column if condition of cell value is met

給定類似於以下內容的Google表格:

  +---+---A--+---B--+---C--+---D--+
  | 1 |      | col1 | col2 | col3 |
  |---+------+------+------+------+
  | 2 | row1 |    1 |  X   |   45 |
  | 3 | row2 |    5 |      |      |
  | 4 | row3 |    4 |      |   34 |
  +---+------+------+------+------+

其中row1,col1是標題標簽,“ X”也是“行/列”組合的有效值;

我需要檢索不為null的所有可能組合行/列標題的列表,在此示例中表示:

row1 | col1
row2 | col1
row3 | col1
row1 | col2
row1 | col3
row3 | col3

我以其他方式嘗試過,例如將ISBLANK函數或QUERY一種用作:

=QUERY(A1:D4, "SELECT A,B,C,D WHERE B IS NOT NULL OR C IS NOT NULL OR D IS NOT NULL",1)

但是它只是先例表的一個子集,而我不能GROUP BY,因為沒有聚合函數;

考慮具有3個工作表的電子表格,“主”,“ LabelTable”和“列表”。

“主要”包含以下數據:

+---+---A--+---B--+---C--+---D--+
| 1 |      | col1 | col2 | col3 |
|---+------+------+------+------+
| 2 | row1 |    1 |  X   |   45 |
| 3 | row2 |    5 |      |      |
| 4 | row3 |    4 |      |   34 |
+---+------+------+------+------+

從A2:D4創建一個命名范圍,並將其命名為“數據”。

我的解決方案是首先在表格的“ LabelTable”上創建一個伴隨表:

+-------+---A--+------B-----+------C-----+------D-----+
|  1    |      |    col1    |    col2    |    col3    |
|-------+------+------------+------------+------------+
|  2    | row1 | row1 col1; | row1 col2; | row1 col3; |
|  3    | row2 | row2 col1; | row2 col2; | row2 col3; |
|  4    | row3 | row3 col1; | row3 col2; | row3 col3; |
+-------+------+------------+------------+------------+

行數和列數與“主”上表格的大小匹配。

如果您有一個大表,則可以通過使用B2中的公式=$A2&","&B$1&";"輕松生成這些表 然后復制並復制到所需范圍的右下角。

然后,我從B2:D4創建了一個命名范圍“標簽”(對於較大的表,此表內容的全部范圍)

然后在“列表”上輸入公式:

=transpose(split(concatenate(arrayformula(if(not(ISBLANK(Data)),Labels,""))),";"))

這將生成一個對列表,例如“ Row1Col1”,對應於每個非空白值。

描述

這使用ISBLANK()確定單元格是否為空。 與“外部”上的ARRAYFORMULA()結合使用,將創建一個TRUE或FALSE值的表。 然后,它使用IF()包裝TRUE / FALSE表,以創建與TRUE / FALSE表具有TRUE位置相對應的標簽表。 這是命名范圍“標簽”的出現位置-它提供了沒有空值的單元格引用。

然后將所有這些都包裝在CONCATENATE()以給出一個帶有引用連接的單元格。 然后,使用SPLIT()將其轉換為數組-這也是為什么“;” 已添加到“標簽”中的單元格引用中。 最后,使用TRANSPOSE()1xN數組轉換為Nx1數組,即單列。

局限性

如果您有動態表格,則還需要使“標簽”動態匹配。 此方法不這樣做。

如果出於某種原因有一個要求,即您不能在“ LabelTable”上使用附帶的表,則此方法將不起作用。 還需要做更多的工作以將其“內置”到公式中。

暫無
暫無

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

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