Я изучаю модели миграции птиц, и у меня возникают проблемы, когда я пытаюсь найти лучший и самый простой способ перемещения данных в Excel. Я неплохо справляюсь с Excel, но я ужасно разбираюсь в макросах и VBA-кодировании, поэтому заранее прошу прощения, если мои мысли о кодировании выглядят совершенно неверно, и что нет ничего плохого в том, чтобы обратиться за советом к эксперту. До сих пор я использовал сводную таблицу для сужения птиц по количеству видов, местоположению и датам.
![pivot table](https://i.stack.imgur.com/qe7Uh.png)
После этого я переместил данные из дат по видам и складывать их из диапазона в один столбец.
![single column](https://i.stack.imgur.com/eu5yF.png)
Я нашел код VBA, который работает (хотя вывод фактически перемещает данные вбок слева направо, это то же самое, что «перемещает B4: P4, B5: P5, B6: P6 и т. д. c ..»), но это только один диапазон за раз :
Sub main()
Dim i As Long
Dim cell As Range
For Each cell In Range("B4:P13")
Range("S4").Offset(i).Value = cell.Value
i = i + 1
Next cell
End Sub
Моя проблема в том, что существует 56 видов и 3 локации. Таким образом, мне нужно переместить данные 168 раз, что смешно. После того, как я их организовал, я провел 56-факторный анализ 56 раз для каждого вида в каждом из трех мест. Если кто-то может помочь, это было бы удивительно и очень полезно для науки.
Мои идеи / надежды и мечты:
Если я смогу повторить код в том же модуле кода VBA и изменить значения диапазонов и выходных местоположений для каждого вида. Все 3 местоположения имеют одинаковый общий формат и расположение диапазонов (плюс минус две дополнительные даты), или, если я могу установить местоположение на другой лист. Вот так…
Sub main()
Dim i As Long
Dim cell As Range
For Each cell In Range("B4:P13")
Range("S4").Offset(i).Value = cell.Value
i = i + 1
For Each cell In Range("B15:P24")
Range("U4").Offset(i).Value = cell.Value
i = i + 1
For Each cell In Range("B26:P35")
Range("W4").Offset(i).Value = cell.Value
i = i + 1
For Each cell In Range("B37:P46")
Range("Y4").Offset(i).Value = cell.Value
i = i + 1
etc…
Next cell
End Sub
Чтобы выглядеть примерно так:
![single column](https://i.stack.imgur.com/lu3b8.png)
Или более предпочтительно это:
![more preferably](https://i.stack.imgur.com/EPwkL.png)
Еще раз спасибо за помощь и вклад. : D