Google Таблицы - переносить нерегулярные данные столбцов в группы в строки

Очень похоже на проблему с транспонированием данных в транспонировать данные столбца Я застрял, пытаясь транспонировать набор данных с несколькими переменными. Самая большая проблема, с которой я сталкиваюсь, — это попытка удалить бесполезные данные. Таблица 1 - как данные получены

Колонка N 07 сен 2022 Тревога Что-то пошло не так рыбная компания 70000123456 1234567 231.03 Посмотреть детали 07 сен 2022 --- мясная компания 70000987654 688773 Посмотреть детали 07 сен 2022 Успех производственная компания 70000192837 Посмотреть детали

Таблица 2 - желаемый результат

Колонка А Колонка Б Колонка С Колонка D Колонка Е дата продавец по Счет Стоимость 07 сен 2022 рыбная компания 70000123456 1234567 231.03 08 сент. 2022 г. мясная компания 70000987654 Д688773Б 07 сен 2022 производственная компания 70000192837

Мне не удалось обрезать ячейки Предупреждение, и что-то пошло не так из-за ошибок вложенности.

Отредактируйте, чтобы подтвердить, какие факторы будут использоваться для определения атрибута. Например: строки, предназначенные для столбца B, всегда будут иметь «компанию» в конце, строки для столбца C всегда будут начинаться с 7 и иметь 10 цифр и т. д.
TheMaster 25.10.2022 22:36

Столбец A всегда будет b MMM DD YYYY, столбец B будет известным поставщиком, поэтому можно использовать справочный список. В столбце C всегда будет 7, за которым следуют 4 нуля, столбцы D и E могут отсутствовать, как показано. группы бронируются по дате, а затем «Просмотреть подробности».

Nick m 25.10.2022 23:39
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
2
94
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Если вам не нужно перетаскивание формул, вы можете использовать что-то вроде следующих шагов, которые я сделал:

  1. Вставил ваши данные, начиная с ячейки A2.
  2. Поместите формулу для определения дат справа от ваших данных, начиная с ячейки B2: =N(B1)+if (ISDATE(A2),1,0) (ПРИМЕЧАНИЕ, эта формула не является динамической)
  3. Создайте уникальную ячейку списка фильтров списка D1: =UNIQUE(Filter(B:B,B:B<>""))
  4. Используемая формула для анализа данных рядом с уникальным списком (начиная с E2): =Transpose(FILTER(if (A:A = "Alert",,A:A),(B:B=D2)*(A:A<>"ALert")*(A:A<>"Something Went Wrong")*(A:A<>"View Details")))

Как вы можете видеть в части 4, я попытался удалить участников, которых вы пометили как нерелевантных. Я не уверен, какие еще правила у вас есть.

Вероятно, есть способ сделать шаги 2 и 4 динамическими формулами разлива, но это все, на что у меня есть время.

Закончилось этим (желтые ячейки имеют соответствующую формулу).

Большое спасибо за проделанную работу. Если бы не необходимость отбрасывать текст, это был бы хороший выбор. Спасибо

Nick m 26.10.2022 03:42
Ответ принят как подходящий

REDUCE массив в строку, соединенную разделителями. Если значение представляет собой дату, присоединяйтесь к 🍚, иначе, если это значение интереса, определяемое REGEXMATCH, присоединяйтесь к 🐇. Из созданной строки, разделенной разделителем строк 🍚, TRANSPOSE и SPLIT разделителем столбцов 🐇

=ARRAYFORMULA(SPLIT(TRANSPOSE(SPLIT(REDUCE(,A2:A20,LAMBDA(a,c,IFS(ISDATE(c),a&"🍚"&TO_TEXT(c),REGEXMATCH(TO_TEXT(c),".*company|70{5}\d+|\d+"),a&"🐇"&c,TRUE,a))),"🍚")),"🐇"))
07 сен 2022 рыбная компания 70000123456 1234567 231.03 07 сен 2022 мясная компания 70000987654 688773 07 сен 2022 производственная компания 70000192837

Большое спасибо за работу, которую вы проделали до сих пор. Столбец B с названиями компаний — это заполнители для имен, которые я не хотел раскрывать. Есть ли способ изменить это?

Nick m 26.10.2022 03:39

@Nickm Это образец. Ожидается, что вы сделаете остальную работу, изменяя вещи по мере необходимости. Попробуйте XMATCH+ISNUMBER. Если вы не можете понять это после разумного исследования (по крайней мере, несколько часов), задайте новый вопрос

TheMaster 26.10.2022 07:23

@Nickm Я согласен с TheMaster ... это не было частью вашего вопроса, и вы должны принять этот ответ, поскольку он довольно впечатляющий. Я нашел три новые формулы, о которых не знал.

pgSystemTester 26.10.2022 22:26

@pgSystemTester Какие были три?

TheMaster 26.10.2022 22:30

@TheMaster REDUCE, КОМПАНИЯ и 🐇

pgSystemTester 26.10.2022 22:40

Просто шучу. To_Text и Reduce (не могу сосчитать).

pgSystemTester 26.10.2022 22:40

@pgSystemTester Я знаю, что вы просто шутите :) Но, поскольку вы, кажется, активно работаете с [excel], я удивлен, что вы не знали о reduce, который, я думаю, появился в Excel по крайней мере год назад.

TheMaster 26.10.2022 22:58

Возможно, я слышал об этом, но точно нет TO_TEXT . Я все еще загипнотизирован диапазонами разливов с 2019 года; я только несколько месяцев назад услышал о некоторых новых функциях, в основном связанных с массивами, которые очень нужны! Я до сих пор не понимаю, что вы сделали с reduce в сочетании с lambda. Я знаю, что означает сокращение в javaScript, поэтому я уверен, что смогу понять это, но за 5 минут, пока я смотрел на вашу формулу, единственное, что я придумал, это комедийный материал, касающийся вашего выбора разделителей строк (что было довольно прагматичный).

pgSystemTester 26.10.2022 23:20

@pgSystemTester Я думаю, вы не знали синтаксиса. Но концепция та же, что и в Javascript. a — это аккумулятор, а c — текущее значение. По сути, это простая петля.

TheMaster 26.10.2022 23:29

Другие вопросы по теме