Недавно мне пришлось собирать некоторые данные с веб-сайта, для которого я использовал простой сценарий очистки для сбора и хранения данных в файле Excel. Проблема, с которой я сталкиваюсь сейчас, заключается в том, что в нынешней форме я вряд ли смогу использовать данные для каких-либо целей. Прямо сейчас мой файл Excel выглядит примерно так: Текущая форма

Мне нужно, чтобы он был в более «читаемом» и сжатом формате, таком как этот

Я, очевидно, должен переставить меньшие столбцы и расположить их один над другим, но я понятия не имею, как это сделать.
Есть ли способы автоматизировать этот процесс?

3 ответа3

2

Если структура данных является регулярной, как в примере, вам просто нужно преобразовать индекс в линейном массиве в индексы строк и столбцов матрицы и использовать INDEX() для его заполнения.

Введите эту формулу

=IFERROR(INDEX($E$2:$E$24,(ROW()-2)*4+COLUMN(A1)),"")

в I2 и перетащите / скопируйте его вниз.

2

В столбце я пишу 1 в I2, 2 в I3, выберите 1 и 2 и перетащите вниз до последнего полученного числа.
В J2 напишите:
=IFERROR(INDEX($E$2:$E$24,MATCH($I2,$E$2:$E$24,0)+1),"")
В К2 пишут:
=IFERROR(INDEX($E$2:$E$24,MATCH($I2,$E$2:$E$24,0)+2),"")

Измените E2:E24 до последней строки в ваших данных и держите $, чтобы исправить ссылки при перетаскивании формулы
Перетащите обе формулы вниз в один столбец
Он вернет данные (столбец I, J, K), если они есть, или пустое "", если нет значений
Когда закончите, вы можете выбрать новую копию данных, вставить специальные значения в другое место, и вы можете использовать его как обычно

-1

Вот формула, которая должна работать для вас (в i2):

=INDEX($E$1:$C$23, SMALL(INDEX((I$1=$D$1:$D$24)*(MATCH(ROW($D$1:$D$24), ROW($D$1:$D$24)))+(I$1<>$D$1:$D$24)*1048577, 0, 0), ROW(Z1)))

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .