Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.10.2010, 13:20   #1
Freerider1972
Пользователь
 
Регистрация: 01.07.2007
Сообщений: 41
По умолчанию Создание цикла переноса данных из одного диапозона в другой

Добрый день!
Помогите создать цикл переноса данных из одних ячеек в другие, образец во вложении
Из желтых ячеек, перенести на зеленые
Строк много, можно использовать для каждой строки, например
[C2:R2].Cut Destination:=[R1]
[C4:R4].Cut Destination:=[R3]
....
строк около 2000, код получится длинный
Подскажите как сделать цикл?
Вложения
Тип файла: zip Образец.zip (4.7 Кб, 18 просмотров)
Freerider1972 вне форума Ответить с цитированием
Старый 30.10.2010, 13:55   #2
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,170
По умолчанию

Вам нужно перенести именно ячейки со всем форматом, или достаточно перенести только значения?
Второй вариант можно сделать быстро на массиве - берём весь диапазон в массив, в цикле перекладываем данные внутри массива, выгружаем результат назад. Быстро.
Но повозиться с описанием перекладки нужно.

Хотя что там, вот. Только с диапазонами сами подправьте - iLastrow или Inputbox или сразу в коде пропишите или ещё как...
Код:
Option Explicit

Sub tt()
Dim a, i As Long, ii As Byte

a = [c1:ag12]
For i = 2 To UBound(a) Step 2
For ii = 1 To 15
a(i - 1, ii + 15) = a(i, ii): a(i, ii) = ""
Next ii, i
[c1:ag12] = a

End Sub
webmoney: E265281470651 Z422237915069 R418926282008

Последний раз редактировалось Hugo121; 30.10.2010 в 14:04.
Hugo121 вне форума Ответить с цитированием
Старый 30.10.2010, 14:58   #3
EugeneS
Форумчанин
 
Регистрация: 06.08.2009
Сообщений: 472
По умолчанию

есть еще варианты переноса формулами, но значения слева необходимо будет удалять вручную

Последний раз редактировалось EugeneS; 30.10.2010 в 15:02.
EugeneS вне форума Ответить с цитированием
Старый 30.10.2010, 16:38   #4
Freerider1972
Пользователь
 
Регистрация: 01.07.2007
Сообщений: 41
По умолчанию

Код:
Hugo121;646052]Вам нужно перенести именно ячейки со всем форматом, или достаточно перенести только значения?
Только значения нужно перенести. Форматирование мне не важно, я его потом сам сделаю.
Попробую ваш код использовать
Freerider1972 вне форума Ответить с цитированием
Старый 30.10.2010, 16:42   #5
Freerider1972
Пользователь
 
Регистрация: 01.07.2007
Сообщений: 41
По умолчанию

Цитата:
Сообщение от EugeneS Посмотреть сообщение
есть еще варианты переноса формулами, но значения слева необходимо будет удалять вручную
а с формулами какими? волшебными? или просто = такой то ячейке?
Freerider1972 вне форума Ответить с цитированием
Старый 30.10.2010, 17:13   #6
Freerider1972
Пользователь
 
Регистрация: 01.07.2007
Сообщений: 41
По умолчанию

Цитата:
Сообщение от Hugo121 Посмотреть сообщение
Вам нужно перенести именно ячейки со всем форматом, или достаточно перенести только значения?
Второй вариант можно сделать быстро на массиве - берём весь диапазон в массив, в цикле перекладываем данные внутри массива, выгружаем результат назад. Быстро.
Но повозиться с описанием перекладки нужно.

Хотя что там, вот. Только с диапазонами сами подправьте - iLastrow или Inputbox или сразу в коде пропишите или ещё как...
Код:
Option Explicit

Sub tt()
Dim a, i As Long, ii As Byte

a = [c1:ag12]
For i = 2 To UBound(a) Step 2
For ii = 1 To 15
a(i - 1, ii + 15) = a(i, ii): a(i, ii) = ""
Next ii, i
[c1:ag12] = a

End Sub
Отлично!!! То что нужно!
Будет время, отблагодарю!
Freerider1972 вне форума Ответить с цитированием
Старый 30.10.2010, 17:44   #7
EugeneS
Форумчанин
 
Регистрация: 06.08.2009
Сообщений: 472
По умолчанию

Цитата:
Сообщение от Freerider1972 Посмотреть сообщение
а с формулами какими? волшебными? или просто = такой то ячейке?
формула в ячейку "R1":

Код:
=ЕСЛИ(ОСТАТ(СТРОКА()+1;2)=0;ЕСЛИ(СМЕЩ(C1;1;0;1;1)=0;"";СМЕЩ(C1;1;0;1;1));"")
протяните вправо и вниз

Последний раз редактировалось EugeneS; 30.10.2010 в 17:49.
EugeneS вне форума Ответить с цитированием
Старый 30.10.2010, 22:15   #8
Freerider1972
Пользователь
 
Регистрация: 01.07.2007
Сообщений: 41
По умолчанию

Цитата:
Сообщение от EugeneS Посмотреть сообщение
формула в ячейку "R1":

Код:
=ЕСЛИ(ОСТАТ(СТРОКА()+1;2)=0;ЕСЛИ(СМЕЩ(C1;1;0;1;1)=0;"";СМЕЩ(C1;1;0;1;1));"")
протяните вправо и вниз
Всегда удивляюсь как можно так разбираться в формулах!!!
СУПЕР!!!
Спасибо большущее и за формулу!!!
Freerider1972 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Выборка данных для переноса на другой лист. Kot9ra Microsoft Office Excel 1 14.10.2010 22:05
Формула для переноса значения с одного листа на другой Олег197709 Microsoft Office Excel 12 12.07.2010 10:52
Копирование данных из одного файла в другой! vipcrash Microsoft Office Excel 17 23.01.2010 21:11
Проблема переноса строк из одного списка (Listbox) в другой. hip3r Win Api 4 13.10.2009 11:59
Перенос данных с одного листа в другой Josser Microsoft Office Excel 0 17.07.2009 10:45