Я собираю базу данных с адресами предприятий, включая ключевые кадры для каждого бизнеса. Электронная таблица Google, которую я унаследовал для этого проекта, содержит столбец «ключевые сотрудники» (в столбце B), в котором несколько имен ключевых сотрудников перечислены в одной и той же ячейке и разделены переносами строк (т. Е. CHAR (10)). В каждом ряду один бизнес. Количество строк в ячейке «ключевой персонал» изменяется построчно. Мой начальный лист выглядит так:
Мне нужно сделать следующее, чтобы оптимизировать этот лист:
- разбить каждую многострочную ячейку «ключевой персонал», чтобы имя каждого ключевого персонала отображалось в отдельной строке. Это требует, чтобы новая строка была вставлена под исходной строкой.
- дублируйте данные из всех других ячеек в исходной строке (т. е. из столбцов A и C: E), чтобы каждая новая строка содержала полные данные для каждого бизнеса
- Мне нужен автоматизированный процесс - у меня будет около 1000 предприятий для обработки, поэтому я не могу сделать это с помощью каких-либо ручных шагов
Лист должен выглядеть следующим образом:
Использование, =TRANSPOSE(SPLIT(B1,CHAR(10)))
очевидно, только часть пути - он не вставляет новые строки и не дублирует записи окружающих столбцов. Вся помощь с благодарностью принята!
источник
Ответы:
Прежде всего, извините за поздний ответ, но у меня есть решение для вас, чтобы работать с.
Код
Разъяснения
Сценарий оценивает каждую строку и, в частности, второй столбец каждой строки (в JavaScript массивы основаны на нуле, поэтому столбец 2 соответствует индексу 1 массива). Он разбивает содержимое этой ячейки на несколько значений и использует в
"\n"
качестве разделителя (перевод строки). После этого он добавляет существующую информацию в массив и добавляет отдельные результаты только при достижении индекса 1 (k == 1)
. Недавно подготовленная строка добавляется в другой массив, который возвращается для отображения результата.Снимок экрана
данные
результат
пример
Я создал для вас файл примера: многострочные ячейки в новые строки .
Добавьте сценарий в меню «Инструменты»> «Редактор сценариев» и нажмите кнопку «Сохранить».
источник
Для повторного решения потребуется сценарий.
Но для единовременного усилия вы могли бы просто использовать
=SPLIT(B3,CHAR(10))
. Это даст вам все имена людей в параллельных вспомогательных столбцах, например:Copy / Paste-special, значение содержимого вспомогательного столбца.
И для каждого используемого вспомогательного столбца (надеюсь, не слишком много, потому что, надеюсь, у вас не слишком много людей в одном бизнесе), вручную скопируйте и вставьте блок строк в конец текущего блока. (Это не очень хорошее описание, но вы получите смещение.)
источник
Для людей, которые могут не сразу понять, как использовать полезную пользовательскую функцию в принятом ответе :
Вам нужно более одного листа, в примере два листа
DATA
иRESULT
.RESULT
Лист пуст , пока запрос не будет работать. Вы можете увидеть запрос, который ссылается наDATA
лист на скриншоте Джейкоба.Скорее всего, вам потребуется изменить значение сравнения для
k
строки 8, которая относится к столбцу, в котором должны быть найдены ваши данные для анализа. Такое же число нужно будет ввести во 2-е значение массива в строке 4.Возможно, вам придется изменить разделитель в строке 4, которая в настоящее время
\n
Чтобы сделать все это немного проще, я взял тот же код и извлек разделитель и целевой столбец в переменные, установленные в верхней части функции. Как Джейкоб упоминает, целевое число столбцов начинается с 0 в качестве первого числа.
использованная литература
источник