Страницы: 1
RSS
Чередование массивов строк
 
Доброго времени суток. Прошу вас о помощи в следующем:

Имеется 2 одинаковых массива строк (по 3000 строк и 10 столбцов, или больше, не важно). В каждом из массивов имеется столбец с одинаковым значением, скажем для первого столбца значение "1", для второго "2" На листе они расположены по порядку, то есть сперва 3000 строк с значением "1" в контрольном столбце, затем 3000 строк  с значением "2".

Задача: совместить оба массива так, чтобы их строки чередовались.

Пробовал добавить пустые строки после каждой заполненной строки макросом, нашел макрос на этом форуме. Добавить строки получилось, но вот как совместить оба массива я не могу ни придумать, ни найти решение.

Пожалуйста помогите.
Изменено: GregMcGill - 03.02.2016 16:10:31 (Добавил приложение)
 
Перекладывайте данные в другое место.
 
"Вместо 1000 слов" приложили-бы файл-пример. Как есть - как надо. Только в Правилах про объем файла почитайте
Согласие есть продукт при полном непротивлении сторон
 
Добавил простейший пример, для иллюстрации проблемы.
 
Цитата
Hugo написал: Перекладывайте данные в другое место.
Боюсь, я вас не понимаю.
Я полагал что решением может быть макрос, ибо объемы для обработки очень уж большие.
Изменено: GregMcGill - 03.02.2016 19:22:46
 
Ну так макросом и перекладывайте.
Только вот расскажите - размеры/расположение блоков известны, или из тоже нужно в коде определять?
А ещё можно делать протягиванием формулы.
 
Ну так я и пришел к знатокам макросов за помощью, может кто подскажет уже существующий макрос.
Расположение и размеры? Да абсолютно любые, я думаю. Если я верно понимаю, при добавлении и перемещении строк совершенно нет разницы сколько и каких ячеек в строке мы перемещаем.
По поводу протягивания формулы - мне надо не получить чередование единиц и двоек, а получить чередование именно строк.
А в строках в свою очередь может быть МНОЖЕСТВО ЛЮБЫХ значений, вплоть до пределов границ экселя. Я же сразу написал, что обрабатываем массив. А не просто два столбца.

Прошу прощения, если сумбурно объясняюсь. Под конец рабочего дня голова плохо соображает. :)
 
Ещё раз - размеры/расположение блоков известны, или их тоже нужно в коде определять?
Ну а про 1/2 - могли бы чтоб народ не путать сделать соответвтующий пример. Хотя конечно понятно, если подумать :)
 
Ну а пока так, схематично:
Код
Sub tt()
Dim i&, ii&
ii = 2
For i = 3 To 32
ii = ii + 1
Cells(ii, 5) = Cells(i, 2)
ii = ii + 1
Cells(ii, 5) = Cells(i + 30, 2)
Next
End Sub

 
Цитата
Hugo написал:
Ещё раз - размеры/расположение блоков известны, или их тоже нужно в коде определять?
Ну а про 1/2 - могли бы чтоб народ не путать сделать соответвтующий пример. Хотя конечно понятно, если подумать
Я бы выложил требуемый файл, только он мне щас не доступен.:) Поэтому постарался показать на единицах и двойках, видать не получилось.

Размеры и позиции - если речь о ширине/высоте и адресе ячеек в координатной сетке экселя, то да, они отформатированы по шаблону и не меняются.
Попробую объяснить иначе:

1. Первый массив - сдвигаем строки на 1 вниз (добавляем между каждой заполненной строкой по 1 пустой строке);
2. Второй массив - процедура аналогичная пункту 1;
3. Совмещаем оба массива путем трансфера второго в первый, совмещая пустый строки первого с заполненными строками второго, соответственно также совмещаем пустые строки второго с заполненными строками первого;

Как-то так я себе представляю это.
Изменено: GregMcGill - 03.02.2016 17:04:35
 
Цитата
Hugo написал: Ну а пока так, схематично:
Сработало, но столбец сменил свое положение (или создал новый).
А нужно не меняя положения ячеек по горизонтали и не создавая новых, перетасовать их в нужном порядке.
Изменено: GregMcGill - 03.02.2016 19:23:47
 
На то же место не получится так просто - поэтому скопировал на другое место.
Ну так в конце процесса перенесите результат куда угодно - можно вручную, а можете записать рекордером в макрос.
 
Цитата
Hugo написал:
На то же место не получится так просто - поэтому скопировал на другое место.
Ну так в конце процесса перенесите результат куда угодно - можно вручную, а можете записать рекордером в макрос.
В моем случае только макросом, ибо количество строк может достигать и 10000. Но дело в том, что я в VBА в частности да и в программировании в целом не очень разбираюсь. Почти никак.
Изменено: GregMcGill - 03.02.2016 17:22:16
 
Да, я так написал! :)
 
Направление понятно?
 
Нет. Что я должен сделать буду с рабочим файлом с 10к строк? Поясните свою идею пожалуйста.

Цитата
Hugo написал: Да, я так написал!
Пардон, недоразумение, ответ выше.
Изменено: GregMcGill - 03.02.2016 19:24:26
 
Поясняю: для первых 5к строк в один клик делаете нечетную автопрогрессию, для следующих 5к - четную, затем просто сортируете весь рабочий диапазон по столбцу с данными прогрессии.
 
Кажись разобрался. Попробую завтра на месте, со свежей головой. Спасибо всем за помощь. :)
Страницы: 1
Наверх