Нормализация данных в Google Sheets - ТРАНСПОРТИРОВАТЬ несколько столбцов Fill Down - PullRequest
1 голос
/ 25 марта 2019

У меня есть данные, которые мне нужно нормализовать.Любое значение в столбце C, разделенное запятой, нуждается в отдельной строке.

Вот мой лист

Данные даны в столбце A - Col C, и желаемый результат - int Col E-ColG.

Этот вопросбыла полезна, и я получил формулу, работающую для столбца C, но когда я пытаюсь объединить столбец A и B, он ломается:

Транспонировать, разделять и объединять Google Sheets

Ответы [ 2 ]

1 голос
/ 29 марта 2019

масштабируемая модификация @ ttarchala's решения:

=ARRAYFORMULA(QUERY(SPLIT(TRANSPOSE(SPLIT(IFERROR(TEXTJOIN(
 "♦", 1, $A3:A&"♠"&$B3:B&"♠"&IFERROR(SPLIT(C3:C, ", ")))), "♦")), "♠"),
 "where Col2<>'' and Col3<>''"))

0


=ARRAYFORMULA(QUERY(SPLIT(TRANSPOSE(SPLIT(IFERROR(TEXTJOIN( "♦", 1, 
 SUBSTITUTE($A3:A&"♠"&$B3:B&"♠"&IFERROR(SPLIT(
 REGEXREPLACE(C3:C, ", |,", "♥"), "♥")), "♠♠", ""))), "♦")), "♠"), "where Col3<>''"))

0

1 голос
/ 26 марта 2019

Эта довольно длинная формула будет делать то, что вы хотите

=query(
  arrayformula(
    split(
      transpose(
        split(
          textjoin(
            "\",
            0,
            $B3:B4 &
              "|" & 
              split(C3:C4, ", ")
          ),
          "\"
        )
      ),
      "|"
    )
  ),
  "select * where Col2 <> ''"
)

enter image description here

Объяснение: действительно слишком долго и слишком скучно писать.Просто перестройте запрос, начиная с самых внутренних формул, чтобы увидеть, как он работает.

Добавление столбца A оставлено читателю в качестве упражнения.

...