Добрый день! Подскажите, пожалуйста, возможно ли переместить столбцы без использования промежуточного копирования данных? Поясню: необходимо, чтоб столбцы 2й и 4й поменялись местами (данные из столбца(2) стали во четвёртый столбец, а данные из столбца(4) во второй).
Добрый день! Подскажите, пожалуйста, возможно ли переместить столбцы без использования промежуточного копирования данных? Поясню: необходимо, чтоб столбцы 2й и 4й поменялись местами (данные из столбца(2) стали во четвёртый столбец, а данные из столбца(4) во второй).Roman777
Pelena, да, это я уже видел, но мне казалось, что тут происходит промежуточное копирование, а потом удаление столбца... по крайней мере, операция будет крайне долгой для большого кол-ва строк. Я думал, мб бывает метод типа offset или аналог того, как листы легко можно перемещать внутри книги...
Pelena, да, это я уже видел, но мне казалось, что тут происходит промежуточное копирование, а потом удаление столбца... по крайней мере, операция будет крайне долгой для большого кол-ва строк. Я думал, мб бывает метод типа offset или аналог того, как листы легко можно перемещать внутри книги...Roman777
Sub RioSwap() Dim ArrA, ArrB, RowX& RowX = ActiveSheet.UsedRange.Rows.Count ArrA = Range("B1:B" & RowX) ArrB = Range("D1:D" & RowX) Range("B1:B" & RowX) = ArrB Range("D1:D" & RowX) = ArrA End Sub
[/vba]
Roman777, здравствуйте.
Я бы сделал так, пример во вложении:
[vba]
Код
Sub RioSwap() Dim ArrA, ArrB, RowX& RowX = ActiveSheet.UsedRange.Rows.Count ArrA = Range("B1:B" & RowX) ArrB = Range("D1:D" & RowX) Range("B1:B" & RowX) = ArrB Range("D1:D" & RowX) = ArrA End Sub
Rioran, Я правильно понял, что тут мы просто записываем в память данные а потом из памяти кидаем в соответствующий столбик? странно что ActiveSheet.UsedRange.Rows.Count выдаёт мне значение 10, когда у меня только 9 строк заполнены... Спасибо большое, оч даже хороший Вариант, а я циклами делал...
Rioran, Я правильно понял, что тут мы просто записываем в память данные а потом из памяти кидаем в соответствующий столбик? странно что ActiveSheet.UsedRange.Rows.Count выдаёт мне значение 10, когда у меня только 9 строк заполнены... Спасибо большое, оч даже хороший Вариант, а я циклами делал...Roman777
Rioran, Подскажите вот ещё что, в Вашем коде, ArrA и ArrB объявлены как Variant, такой метод работает только при таком типе для данных переменных?
Rioran, Подскажите вот ещё что, в Вашем коде, ArrA и ArrB объявлены как Variant, такой метод работает только при таком типе для данных переменных?Roman777
Мой метод работает как минимум при этом типе переменной. В момент присвоения значения эти переменные превращаются в двумерные массивы. Конечно, переменные можно объявлять как массивы, но это не всегда удобно.
Мой метод работает как минимум при этом типе переменной. В момент присвоения значения эти переменные превращаются в двумерные массивы. Конечно, переменные можно объявлять как массивы, но это не всегда удобно.Rioran
Роман, Москва, voronov_rv@mail.ru Яндекс-Деньги: 41001312674279
Сообщение отредактировал Rioran - Четверг, 17.09.2015, 18:16