簡體   English   中英

如何根據Google表格中的布爾值將行合並為一列?

[英]How to combine rows into one column based on boolean values in Google Sheets?

我很難思考如何解決這個問題......

假設我有一個表,其中包含多個具有不同潛在屬性的項目,為每個項目的每個屬性分配了一個布爾值。 (在這種情況下,我們為每個“顏色”和“尺寸”提供了多個選項)

            |           Color                  |       Size     
-----------------------------------------------------------------------
    Item    | Red | Blue | White | Black | Tan | Large | Medium | Small
-----------------------------------------------------------------------
    Pants   |     | y    |       | y     | y   | y     | y      | y    |
    Shirt   | y   |      | y     | y     |     | y     | y      | y    |
    Skirt   |     | y    | y     |       |     |       | y      | y    |
    Socks   | y   | y    | y     | y     | y   | y     | y      | y    |

然后我想將其輸出到單個列中,例如:

Pants, Blue, Large
Pants, Blue, Medium
Pants, Blue, Small
Pants, Black, Large
Pants, Black, Medium
Pants, Black, Small
Pants, Tan, Large
Pants, Tan, Medium
Pants, Tan, Small
Shirt, Red, Large
etc etc

因此,我試圖用每行真值的所有可能結果填充一列,並與具有真值的每一列的標題連接。 在此示例中,它將進一步分解每個項目的顏色和大小。

關於在 Google 表格中解決此問題的最佳方法的想法?

示例表: https : //docs.google.com/spreadsheets/d/199msbUtUuZzb0HvBMgjQW98hRt3StFEyUFfTfLzSQzw/edit?usp=sharing

小規模:

=ARRAYFORMULA(TRANSPOSE(SPLIT(TEXTJOIN("\", 1, 
 IF(B3:F6="y", REPT(A3:A6&", "&B2:F2&"\", MMULT(N(G3:I6="y"), 
 TRANSPOSE(COLUMN(G2:I2)^0))), )), "\"))&", "& 
 TRANSPOSE(SPLIT(JOIN(" ", REPT(TRIM(TRANSPOSE(QUERY(TRANSPOSE(
 IF(G3:I6="y", G2:I2, )),, COLUMNS(IF(G3:I6="y", G2:I2, )))))&" ", 
 MMULT(N(B3:F6="y"), TRANSPOSE(COLUMN(B3:F6)^0)))), " ")))

0


僅適用於兩者的組合:

=ARRAYFORMULA(QUERY(TRANSPOSE(SPLIT(QUERY(TRANSPOSE(QUERY(
 IF(B3:F="y", "♦"&A3:A&", "&B2:F2&"♦", ),,99^99)),,99^99), "♦")), 
 "where not Col1 starts with ' ' order by Col1"))

在此處輸入圖片說明


修改@MK 公式以模擬 CSV:

=ARRAYFORMULA(TRANSPOSE(QUERY(TRANSPOSE(QUERY(VLOOKUP(SEQUENCE(4*5*3, 1, 0)/(5*3)+3, 
 {ROW(A:A), A:A&",", IF(B:I="y", {B2:F2&",", G2:I2}, )},
 INT(MOD(SEQUENCE(4*5*3, 1, 0), {9^99, 5*3, 3})/{9^99, 4, 1})+{2, 3, 3+4}),
 "where Col2<>'' and Col3<>''")),,9^99)))

對於此類問題,我喜歡使用帶有 [index] 值的 VLOOKUP(),該值由由數據的某些參數構成的數組組成。 我制作了一個名為 mK.Help 的新標簽,並將這個公式放在那里,它將您的數據重新整理成您希望的方式(我認為)。

如果您確實需要逗號分隔,我可以提供幫助,但通常人們只想要列中的數據。 每個參數都由一個簡單的公式提供,該公式計算數據的各個方面。 可以重寫大重組公式以包含每個公式,而不是引用輔助單元格,但我發現當我把它分開時,人們更容易理解發生了什么。

=ARRAYFORMULA(QUERY(VLOOKUP(SEQUENCE(Q3*Q4*Q5,1,0)/(Q4*Q5)+Q2,{ROW(A:A),A:A,IF(B:I="y",B2:I2,)},INT(MOD(SEQUENCE(Q3*Q4*Q5,1,0),{9^99,Q4*Q5,Q5})/{9^99,Q5,1})+{2,3,3+Q4}),"where Col2<>'' and Col3<>''"))

暫無
暫無

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

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