Как объединить строки в один столбец на основе логических значений в Google Sheets? - PullRequest
1 голос
/ 23 марта 2020

Мне трудно сконцентрироваться на том, как подойти к этому ...

Скажем, у меня есть таблица с несколькими элементами с различными потенциальными свойствами, которым назначено логическое значение для каждого свойства для каждый предмет. (в этом случае у нас есть несколько вариантов для каждого «цвета» и «размера»)

            |           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 Sheets?

Пример листа: https://docs.google.com/spreadsheets/d/199msbUtUuZzb0HvBMgjQW98hRt3StFEyUFfTfLzSQzw/edit?usp=sharing

Ответы [ 2 ]

1 голос
/ 24 марта 2020

Для подобных задач мне нравится использовать VLOOKUP () со значением [index], которое состоит из массива, составленного из некоторых параметров ваших данных. Я сделал новую вкладку под названием 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<>''"))
1 голос
/ 24 марта 2020

в небольшом масштабе:

=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"))

enter image description here


Модифицированная формула @MK для mimi c 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)))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...