Я надеялся использовать Excel (либо VBA, либо Power Query), чтобы изменить мой набор данных и сместить столбцы, чтобы они вместо этого отображались в виде строк.
(Извинения за форматирование, я новичок итаблицы вышли не так хорошо, как я надеялся)
Я использую данные о продажах, и в настоящее время они имеют следующий вид:
(конечная цель будетиспользование его в базе данных Access и привязка его к сводной таблице)
Категория |Сегмент |Бренд |SKU # |Источник данных |201901 |201902 |201903 | ...
Лицо |Моющее средство |Топор |12345 |$ Volume |5 долларов США |10 долларов США |$ 16 | ...
Лицо |Лосьон |Голубь |54321 |$ Volume |$ 14 |25 долларов |$ 13 | ...
Формат, в котором я хотел бы переместить его:
Категория |Сегмент |Бренд |SKU # |Источник данных |Год |Значение
Лицо |Моющее средство |Топор |12345 |$ Volume |201901 |$ 5
Лицо |Моющее средство |Топор |12345 |$ Volume |201902 |$ 10
Лицо |Моющее средство |Топор |12345 |$ Volume |201903 |$ 16
Лицо |Лосьон |Голубь |54321 |$ Volume |201901 |$ 14
Лицо |Лосьон |Голубь |54321 |$ Volume |201902 |$ 25
Лицо |Лосьон |Голубь |54321 |$ Volume |201903 |$ 13
Существует 4 разных источника данных, но они будут в одном и том же формате.Я также могу разбить Категорию, Сегмент и Бренд на таблицу поиска, если вы думаете, что это облегчит задачу.
Я планировал написать некоторый код на VBA и начал с того, что изложил все, что коднужно будет выполнить.Затем я написал пару строк, которые быстро сломались, и начал искать альтернативные решения (а именно силовой запрос).Я думал, что лучшим способом будет транспонировать данные, но описания каждого продукта не соответствуют остальным данным.Будем весьма благодарны за любые ресурсы или указания, как это сделать.
Вот что я пытался сделать до сих пор: В VBA, по сути, я сохранил счетчик в переменных как:
Set ws = ThisWorkbook.Worksheets("Source")
totalRows = ws.Range("A1").CurrentRegion.Rows.Count
RelColumns = ws.Range("A1").CurrentRegion.Columns.Count - 7 'There are 7 columns outside the data which are constant (The Cat/Segment/Brand/Sku/datasource)
^ После этого я планировал вложить циклы, чтобы ссылаться на значение, а затем скопировать все на новый лист.Моя идея была что-то вроде:
For i = 2 to TotalRows 'Gets each SKU and data source within that SKU
For j = 1 to RelColumns 'Does each value (year) that needs to be brought across
...
Next
Next
Я не был уверен, куда идти дальше, так как я не мог найти способ скопировать только эти ячейки и получить правильное значение из каждой (Там не было 'любой код, который я сделал для этого, просто мозговой штурм).Вместо того, чтобы продолжать врезаться в стену, я попытался решить проблему в другом направлении:
Я импортировал данные в Excel и отформатировал их в таблицу.Перенеся его в редактор мощных запросов, я поэкспериментировал с вкладкой преобразования, используя функцию транспонирования.Однако годы (поскольку они были заголовками столбцов) удаляются, и описание каждого продукта перемещается в верхнюю часть листа (что и ожидалось, учитывая, как работает транспонирование).Я легко могу вернуть годы назад вручную, но затрудняюсь, как правильно восстановить описания.Каждую из них нужно будет продублировать на столько строк, сколько имеется в настоящее время столбцов, и способ сделать это ускользает от меня.Я могу написать VBA или Python, но теряюсь в том, куда идти с этим.