Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Перемешать данные в нужном порядке. - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по Excel » Перемешать данные в нужном порядке. (Формулы)
Перемешать данные в нужном порядке.
Vetali Дата: Вторник, 25.06.2013, 15:16 | Сообщение № 1
Группа: Пользователи
Ранг: Участник
Сообщений: 88
Репутация: 1 ±
Замечаний: 0% ±

Приветствую форумчан и прошу о помощи.
Не знаю, правильно ли назвал тему но все же...
Суть проблемы вот в чем: имеем диапазон, массив данных в приложенном примере цифры в текстовом формате, так же это могут быть даты, имена, ссылки на изображения и прочее. Кол-во строк может доходить до десятков тысяч.
Хотелось бы перемешать их в следующем порядке: диапазон делится ровно на 2 части и в отдельном столбце они смешиваются одна ячейка из 1-го далее ячейка из второго после опять из первого и т.д. Так же по пять ячеек, пять из первого, далее пять из второго, потом опять из первого и т.д.
Возможно ли написать 2 формулы, для первого и второго варианта которые работали бы с любыми форматами данных?
Файл прикладываю.
Заранее благодарю за помощь.
К сообщению приложен файл: primer.xls (22.0 Kb)


Сообщение отредактировал Vetali - Вторник, 25.06.2013, 15:17
 
Ответить
СообщениеПриветствую форумчан и прошу о помощи.
Не знаю, правильно ли назвал тему но все же...
Суть проблемы вот в чем: имеем диапазон, массив данных в приложенном примере цифры в текстовом формате, так же это могут быть даты, имена, ссылки на изображения и прочее. Кол-во строк может доходить до десятков тысяч.
Хотелось бы перемешать их в следующем порядке: диапазон делится ровно на 2 части и в отдельном столбце они смешиваются одна ячейка из 1-го далее ячейка из второго после опять из первого и т.д. Так же по пять ячеек, пять из первого, далее пять из второго, потом опять из первого и т.д.
Возможно ли написать 2 формулы, для первого и второго варианта которые работали бы с любыми форматами данных?
Файл прикладываю.
Заранее благодарю за помощь.

Автор - Vetali
Дата добавления - 25.06.2013 в 15:16
Serge_007 Дата: Вторник, 25.06.2013, 15:40 | Сообщение № 2
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2749 ±
Замечаний: ±

Excel 2016
По первому варианту:
Код
=ЕСЛИ(ЕЧЁТН(СТРОКА());ИНДЕКС(A$2:A$21;СТРОКА()/2);ИНДЕКС(A$12:A$21;СТРОКА()/2))
К сообщению приложен файл: Vetali_44.xls (33.0 Kb)


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
СообщениеПо первому варианту:
Код
=ЕСЛИ(ЕЧЁТН(СТРОКА());ИНДЕКС(A$2:A$21;СТРОКА()/2);ИНДЕКС(A$12:A$21;СТРОКА()/2))

Автор - Serge_007
Дата добавления - 25.06.2013 в 15:40
Vetali Дата: Вторник, 25.06.2013, 17:07 | Сообщение № 3
Группа: Пользователи
Ранг: Участник
Сообщений: 88
Репутация: 1 ±
Замечаний: 0% ±

Сергей, у меня не получается. заменил 21 на 10000, увеличил диапазон. сделал массив от 0001 по 0040
получается вот что:
0001
0011
0002
0012

а хотелось бы в таком случае:
0001
0021
0002
0022
где не так делаю?
 
Ответить
СообщениеСергей, у меня не получается. заменил 21 на 10000, увеличил диапазон. сделал массив от 0001 по 0040
получается вот что:
0001
0011
0002
0012

а хотелось бы в таком случае:
0001
0021
0002
0022
где не так делаю?

Автор - Vetali
Дата добавления - 25.06.2013 в 17:07
Vetali Дата: Вторник, 25.06.2013, 17:16 | Сообщение № 4
Группа: Пользователи
Ранг: Участник
Сообщений: 88
Репутация: 1 ±
Замечаний: 0% ±

ага, понял. вместо 12 в формуле нужно было подставить число-половину нового диапазона.
так работает отлично.
можно ли сделать так что вместо 21 поставил большую цифру которая точно покроет в будущем все нужные диапазоны, а необходимость замены цифры 12 в вашей формуле, заменить на какой-нить автоматический просчет половины диапазона чтоб туда не лезли?
а то боюсь могут больше испортить, чем облегчить себе труд..
 
Ответить
Сообщениеага, понял. вместо 12 в формуле нужно было подставить число-половину нового диапазона.
так работает отлично.
можно ли сделать так что вместо 21 поставил большую цифру которая точно покроет в будущем все нужные диапазоны, а необходимость замены цифры 12 в вашей формуле, заменить на какой-нить автоматический просчет половины диапазона чтоб туда не лезли?
а то боюсь могут больше испортить, чем облегчить себе труд..

Автор - Vetali
Дата добавления - 25.06.2013 в 17:16
Serge_007 Дата: Вторник, 25.06.2013, 17:23 | Сообщение № 5
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2749 ±
Замечаний: ±

Excel 2016
Код
=ЕСЛИ(ЕЧЁТН(СТРОКА());ИНДЕКС(A$2:A$1000;СТРОКА()/2);ИНДЕКС(ДВССЫЛ("a"&СЧЁТЗ(A$2:A$1000)/2+2&":a1000");СТРОКА()/2))


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
Сообщение
Код
=ЕСЛИ(ЕЧЁТН(СТРОКА());ИНДЕКС(A$2:A$1000;СТРОКА()/2);ИНДЕКС(ДВССЫЛ("a"&СЧЁТЗ(A$2:A$1000)/2+2&":a1000");СТРОКА()/2))

Автор - Serge_007
Дата добавления - 25.06.2013 в 17:23
Vetali Дата: Вторник, 25.06.2013, 17:43 | Сообщение № 6
Группа: Пользователи
Ранг: Участник
Сообщений: 88
Репутация: 1 ±
Замечаний: 0% ±

Да, формула для первого варианта работает отлично! Большое спасибо, Сергей.
Небольшая загвоздочка, она не работает когда нечетное кол-во строк. Но с этим думаю придумаем что-нибудь..


Сообщение отредактировал Vetali - Вторник, 25.06.2013, 17:44
 
Ответить
СообщениеДа, формула для первого варианта работает отлично! Большое спасибо, Сергей.
Небольшая загвоздочка, она не работает когда нечетное кол-во строк. Но с этим думаю придумаем что-нибудь..

Автор - Vetali
Дата добавления - 25.06.2013 в 17:43
Serge_007 Дата: Вторник, 25.06.2013, 17:47 | Сообщение № 7
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2749 ±
Замечаний: ±

Excel 2016
Цитата (Vetali)
она не работает когда нечетное кол-во строк
Код
=ЕСЛИ(ЕЧЁТН(СТРОКА());ИНДЕКС(A$2:A$1000;СТРОКА()/2);ИНДЕКС(ДВССЫЛ("a"&ОКРУГЛ(СЧЁТЗ(A$2:A$1000)/2+2;)&":a1000");СТРОКА()/2))


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
Сообщение
Цитата (Vetali)
она не работает когда нечетное кол-во строк
Код
=ЕСЛИ(ЕЧЁТН(СТРОКА());ИНДЕКС(A$2:A$1000;СТРОКА()/2);ИНДЕКС(ДВССЫЛ("a"&ОКРУГЛ(СЧЁТЗ(A$2:A$1000)/2+2;)&":a1000");СТРОКА()/2))

Автор - Serge_007
Дата добавления - 25.06.2013 в 17:47
Vetali Дата: Вторник, 25.06.2013, 17:55 | Сообщение № 8
Группа: Пользователи
Ранг: Участник
Сообщений: 88
Репутация: 1 ±
Замечаний: 0% ±

Serge_007, Спасибо!
 
Ответить
СообщениеSerge_007, Спасибо!

Автор - Vetali
Дата добавления - 25.06.2013 в 17:55
_Boroda_ Дата: Среда, 26.06.2013, 10:59 | Сообщение № 9
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16675
Репутация: 6481 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Для первого варианта еще формула
Код
=ИНДЕКС(A$2:A$1000;СТРОКА()/2+ЕНЕЧЁТ(СТРОКА())*СЧЁТЗ(A$2:A$1000)/2)

а для второго
Код
=ИНДЕКС(A$2:A$1000;ОТБР((СТРОКА()-2)/(5*2);0)*5+ОСТАТ((СТРОКА()-2)/5;1)*5+1+ЕНЕЧЁТ((СТРОКА()-2)/5)*(СЧЁТЗ(A$2:A$1000)/2+1))

Я так думаю, что ее оптимизировать еще можно
К сообщению приложен файл: Vetali_46.xls (32.5 Kb)


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеДля первого варианта еще формула
Код
=ИНДЕКС(A$2:A$1000;СТРОКА()/2+ЕНЕЧЁТ(СТРОКА())*СЧЁТЗ(A$2:A$1000)/2)

а для второго
Код
=ИНДЕКС(A$2:A$1000;ОТБР((СТРОКА()-2)/(5*2);0)*5+ОСТАТ((СТРОКА()-2)/5;1)*5+1+ЕНЕЧЁТ((СТРОКА()-2)/5)*(СЧЁТЗ(A$2:A$1000)/2+1))

Я так думаю, что ее оптимизировать еще можно

Автор - _Boroda_
Дата добавления - 26.06.2013 в 10:59
Vetali Дата: Понедельник, 08.07.2013, 17:19 | Сообщение № 10
Группа: Пользователи
Ранг: Участник
Сообщений: 88
Репутация: 1 ±
Замечаний: 0% ±

Добрый день!

_Boroda_, Огромное спасибо!

Формулы отлично делают свою работу и справляются со своей задачею. Но на практике оказалось что есть еще случаи которые выбиваются из этих условий к сожалению. По этому опять обращаюсь к вам за помощью.
Посчитал что, что мой вопрос будет продолжением данной темы по этому не стал создавать новую.
Проблема вот в чем:
Имеется файл в котором 2 столбца: номер и соответствующий ему код. Записей в таких файлах обычно по 40 тысяч. Может быть текст, номер, дата и т.д.
Работа обычно идет с сотнями но в контексте всего файла. Хотелось бы что бы формула перенесла данные на второй лист в следующем виде:
Берется первая сотня делиться пополам а строки располагаются поочередно одна с начала, другая с начала половины, далее вторая с начала сотни после которой вторая из половины сотни. И так со всеми сотнями. Пример:

Номер1 Код1
Номер51 Код51
Номер2 Код2
Номер52 Код52
....
Номер101 Код101
Номер151 Код151
...
Более понятно наверно будет в приложенном файле.
Буду очень признателен за помощь и заранее благодарю!
Предупреждение: Файл содержит более 200 записей(что бы наглядней было), по этому у кого проблемы с трафиком будьте осторожны.
К сообщению приложен файл: new_primer.xls (35.5 Kb)


Сообщение отредактировал Vetali - Понедельник, 08.07.2013, 17:31
 
Ответить
СообщениеДобрый день!

_Boroda_, Огромное спасибо!

Формулы отлично делают свою работу и справляются со своей задачею. Но на практике оказалось что есть еще случаи которые выбиваются из этих условий к сожалению. По этому опять обращаюсь к вам за помощью.
Посчитал что, что мой вопрос будет продолжением данной темы по этому не стал создавать новую.
Проблема вот в чем:
Имеется файл в котором 2 столбца: номер и соответствующий ему код. Записей в таких файлах обычно по 40 тысяч. Может быть текст, номер, дата и т.д.
Работа обычно идет с сотнями но в контексте всего файла. Хотелось бы что бы формула перенесла данные на второй лист в следующем виде:
Берется первая сотня делиться пополам а строки располагаются поочередно одна с начала, другая с начала половины, далее вторая с начала сотни после которой вторая из половины сотни. И так со всеми сотнями. Пример:

Номер1 Код1
Номер51 Код51
Номер2 Код2
Номер52 Код52
....
Номер101 Код101
Номер151 Код151
...
Более понятно наверно будет в приложенном файле.
Буду очень признателен за помощь и заранее благодарю!
Предупреждение: Файл содержит более 200 записей(что бы наглядней было), по этому у кого проблемы с трафиком будьте осторожны.

Автор - Vetali
Дата добавления - 08.07.2013 в 17:19
_Boroda_ Дата: Понедельник, 08.07.2013, 18:08 | Сообщение № 11
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16675
Репутация: 6481 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Код
=ИНДЕКС(Лист1!A$2:A$1000;СТРОКА()/2+ЕНЕЧЁТ(СТРОКА())*49,5)
К сообщению приложен файл: new_primer_1.xls (92.5 Kb)


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
Сообщение
Код
=ИНДЕКС(Лист1!A$2:A$1000;СТРОКА()/2+ЕНЕЧЁТ(СТРОКА())*49,5)

Автор - _Boroda_
Дата добавления - 08.07.2013 в 18:08
Vetali Дата: Понедельник, 08.07.2013, 18:39 | Сообщение № 12
Группа: Пользователи
Ранг: Участник
Сообщений: 88
Репутация: 1 ±
Замечаний: 0% ±

_Boroda_,
Большое спасибо!
Подскажите только пожалуйста, почему у меня в других файлах не получается так как у вас? то есть номера переносятся на второй лист без первых нолей, ну и соответственно когда пытаюсь привести ячейки к текстовому формату ничего не выходит..

Разобрался. Еще раз спасибо!


Сообщение отредактировал Vetali - Понедельник, 08.07.2013, 18:46
 
Ответить
Сообщение_Boroda_,
Большое спасибо!
Подскажите только пожалуйста, почему у меня в других файлах не получается так как у вас? то есть номера переносятся на второй лист без первых нолей, ну и соответственно когда пытаюсь привести ячейки к текстовому формату ничего не выходит..

Разобрался. Еще раз спасибо!

Автор - Vetali
Дата добавления - 08.07.2013 в 18:39
Vetali Дата: Понедельник, 08.07.2013, 19:03 | Сообщение № 13
Группа: Пользователи
Ранг: Участник
Сообщений: 88
Репутация: 1 ±
Замечаний: 0% ±

К сожалению что-то не получается все же.
Попробовал в файле на 3000 строк получается, для того чтоб добраться до конца на втором листе нужно около 6000 строк.
нумерация с 00001000 по 00003999. почти в конце на втором листе вот что получаю:

00003949 00003949|py0ud5cx
00003999 00003999|eunbljuo
00003950 00003950|yshx4zfh
00000000 0
00003951 00003951|da13nwlj
00000000 0
00003952 00003952|67y34f9l
00000000 0
это строки с 5900 по 5907 когда их всего должно быть 3000.
Файл велик и приложить не могу.
 
Ответить
СообщениеК сожалению что-то не получается все же.
Попробовал в файле на 3000 строк получается, для того чтоб добраться до конца на втором листе нужно около 6000 строк.
нумерация с 00001000 по 00003999. почти в конце на втором листе вот что получаю:

00003949 00003949|py0ud5cx
00003999 00003999|eunbljuo
00003950 00003950|yshx4zfh
00000000 0
00003951 00003951|da13nwlj
00000000 0
00003952 00003952|67y34f9l
00000000 0
это строки с 5900 по 5907 когда их всего должно быть 3000.
Файл велик и приложить не могу.

Автор - Vetali
Дата добавления - 08.07.2013 в 19:03
_Boroda_ Дата: Понедельник, 08.07.2013, 21:02 | Сообщение № 14
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16675
Репутация: 6481 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Да, согласен. Нужно так
Код
=ИНДЕКС(Лист1!A$2:A$3000;СТРОКА()/2+ЕНЕЧЁТ(СТРОКА())*49,5+50*ЦЕЛОЕ((СТРОКА()-2)/100))


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеДа, согласен. Нужно так
Код
=ИНДЕКС(Лист1!A$2:A$3000;СТРОКА()/2+ЕНЕЧЁТ(СТРОКА())*49,5+50*ЦЕЛОЕ((СТРОКА()-2)/100))

Автор - _Boroda_
Дата добавления - 08.07.2013 в 21:02
Vetali Дата: Вторник, 09.07.2013, 10:52 | Сообщение № 15
Группа: Пользователи
Ранг: Участник
Сообщений: 88
Репутация: 1 ±
Замечаний: 0% ±

_Boroda_,
Александр благодарю. Это именно то что нужно.
Единственный изъян формулы в плане универсальности, то что если у столбцов нет заголовка то первый номер повторяется дважды а последний отсутствует. Пробовал, в формуле А$2 менял на A$1 и тоже самое с В. Возможно я что-то неправильно сделал. Только прошу не принимать это как негативную критику, формула отлично работает для данного случая.
 
Ответить
Сообщение_Boroda_,
Александр благодарю. Это именно то что нужно.
Единственный изъян формулы в плане универсальности, то что если у столбцов нет заголовка то первый номер повторяется дважды а последний отсутствует. Пробовал, в формуле А$2 менял на A$1 и тоже самое с В. Возможно я что-то неправильно сделал. Только прошу не принимать это как негативную критику, формула отлично работает для данного случая.

Автор - Vetali
Дата добавления - 09.07.2013 в 10:52
Vetali Дата: Среда, 07.10.2015, 12:13 | Сообщение № 16
Группа: Пользователи
Ранг: Участник
Сообщений: 88
Репутация: 1 ±
Замечаний: 0% ±

Рад снова всех приветствовать! victory
Прошу очередной раз о помощи по данному вопросу. Заранее извиняюсь если нужно было создать отдельную тему.
Количество данных увеличивается а сроки как у нас принято сжимаются поэтому хотел бы спросить и попросить если возможно макрос для более быстрой обработки данных.
Есть файл как в примере ниже, при запуске макроса должен создаться другой файл в котором данные уже в нужном порядке. К названии нового файла желательно добавить "для ТР". пояснение: (для ТехноРивер) Строчек может быть десятки тысяч, столбцов думаю больше 20 не будет и данные соответственно должны совпадать как в исходном файле.
Формула Александра идеально работает. Но только для случаев когда кол-во данных кратно 100. Хотелось бы сделать универсальным это действие таким образом:
если например данных 623 то округляется кол-во данных до следующей десятки, то есть до 630. Данные для дополнения можно брать сначала списка. То есть мы берем первые 7 записей и добавляем их в конец.
Итого мы имеем следующее действие: макрос выставляет первые 600 записей в нужном порядке, а остаток из 30 данных просто добавляет к концу этого списка, соответственно это все уже в новом файле, исходник не меняется.

Буду очень признателен!
[moder]Создайте новую тему. Эта тема закрыта[/moder]
К сообщению приложен файл: 5630797.xls (29.5 Kb)


Сообщение отредактировал Pelena - Среда, 07.10.2015, 13:11
 
Ответить
СообщениеРад снова всех приветствовать! victory
Прошу очередной раз о помощи по данному вопросу. Заранее извиняюсь если нужно было создать отдельную тему.
Количество данных увеличивается а сроки как у нас принято сжимаются поэтому хотел бы спросить и попросить если возможно макрос для более быстрой обработки данных.
Есть файл как в примере ниже, при запуске макроса должен создаться другой файл в котором данные уже в нужном порядке. К названии нового файла желательно добавить "для ТР". пояснение: (для ТехноРивер) Строчек может быть десятки тысяч, столбцов думаю больше 20 не будет и данные соответственно должны совпадать как в исходном файле.
Формула Александра идеально работает. Но только для случаев когда кол-во данных кратно 100. Хотелось бы сделать универсальным это действие таким образом:
если например данных 623 то округляется кол-во данных до следующей десятки, то есть до 630. Данные для дополнения можно брать сначала списка. То есть мы берем первые 7 записей и добавляем их в конец.
Итого мы имеем следующее действие: макрос выставляет первые 600 записей в нужном порядке, а остаток из 30 данных просто добавляет к концу этого списка, соответственно это все уже в новом файле, исходник не меняется.

Буду очень признателен!
[moder]Создайте новую тему. Эта тема закрыта[/moder]

Автор - Vetali
Дата добавления - 07.10.2015 в 12:13
Мир MS Excel » Вопросы и решения » Вопросы по Excel » Перемешать данные в нужном порядке. (Формулы)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!