Случайное перемешивание ячеек в выбранном диапазоне. Как?
Alex_Word
Дата: Вторник, 09.06.2015, 11:14 |
Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 21
Репутация:
0
±
Замечаний:
0% ±
Excel 2013
Здравствуйте! Возникла необходимость в случайном порядке перемешивать выбранный диапазон ячеек. Пример того как должно получиться я прикладываю к теме. Скажите, это возможно как-нибудь автоматизировать? Заранее спасибо.
Здравствуйте! Возникла необходимость в случайном порядке перемешивать выбранный диапазон ячеек. Пример того как должно получиться я прикладываю к теме. Скажите, это возможно как-нибудь автоматизировать? Заранее спасибо. Alex_Word
Ответить
Сообщение Здравствуйте! Возникла необходимость в случайном порядке перемешивать выбранный диапазон ячеек. Пример того как должно получиться я прикладываю к теме. Скажите, это возможно как-нибудь автоматизировать? Заранее спасибо. Автор - Alex_Word Дата добавления - 09.06.2015 в 11:14
Pelena
Дата: Вторник, 09.06.2015, 11:16 |
Сообщение № 2
Группа: Админы
Ранг: Местный житель
Сообщений: 19517
Репутация:
4632
±
Замечаний:
±
Excel 365 & Mac Excel
Здравствуйте. Можно заполнить доп. столбец случайными числами и отсортировать по этому столбцу
Здравствуйте. Можно заполнить доп. столбец случайными числами и отсортировать по этому столбцу Pelena
"Черт возьми, Холмс! Но как??!!" Ю-money 41001765434816
Ответить
Сообщение Здравствуйте. Можно заполнить доп. столбец случайными числами и отсортировать по этому столбцу Автор - Pelena Дата добавления - 09.06.2015 в 11:16
Alex_Word
Дата: Вторник, 09.06.2015, 11:19 |
Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 21
Репутация:
0
±
Замечаний:
0% ±
Excel 2013
Здравствуйте. В том-то и дело, что там введены данные, которые изменять нельзя и которые не могут быть случайными. Поэтому нужно как-то перемешать, не изменяя при этом содержимое ячеек.
Здравствуйте. В том-то и дело, что там введены данные, которые изменять нельзя и которые не могут быть случайными. Поэтому нужно как-то перемешать, не изменяя при этом содержимое ячеек. Alex_Word
Ответить
Сообщение Здравствуйте. В том-то и дело, что там введены данные, которые изменять нельзя и которые не могут быть случайными. Поэтому нужно как-то перемешать, не изменяя при этом содержимое ячеек. Автор - Alex_Word Дата добавления - 09.06.2015 в 11:19
Pelena
Дата: Вторник, 09.06.2015, 11:20 |
Сообщение № 4
Группа: Админы
Ранг: Местный житель
Сообщений: 19517
Репутация:
4632
±
Замечаний:
±
Excel 365 & Mac Excel
Где "там"? Файл не хотите показать?
Где "там"? Файл не хотите показать? Pelena
"Черт возьми, Холмс! Но как??!!" Ю-money 41001765434816
Ответить
Сообщение Где "там"? Файл не хотите показать? Автор - Pelena Дата добавления - 09.06.2015 в 11:20
pabchek
Дата: Вторник, 09.06.2015, 17:08 |
Сообщение № 5
Группа: Проверенные
Ранг: Ветеран
Сообщений: 931
Репутация:
218
±
Замечаний:
0% ±
Excel 2007
Вот. Пока с допстолбцом.
"Учиться, учиться и еще раз учиться!" WM: R399923528092
Ответить
Сообщение Вот. Пока с допстолбцом. Автор - pabchek Дата добавления - 09.06.2015 в 17:08
Pelena
Дата: Вторник, 09.06.2015, 17:27 |
Сообщение № 6
Группа: Админы
Ранг: Местный житель
Сообщений: 19517
Репутация:
4632
±
Замечаний:
±
Excel 365 & Mac Excel
Возможно, я неправильно понимаю, но я имела в виду сортировку не формулой, а встроенным инструментом Сортировка, тогда будут задействованы все столбцы, а не только А.
Возможно, я неправильно понимаю, но я имела в виду сортировку не формулой, а встроенным инструментом Сортировка, тогда будут задействованы все столбцы, а не только А. Pelena
"Черт возьми, Холмс! Но как??!!" Ю-money 41001765434816
Ответить
Сообщение Возможно, я неправильно понимаю, но я имела в виду сортировку не формулой, а встроенным инструментом Сортировка, тогда будут задействованы все столбцы, а не только А. Автор - Pelena Дата добавления - 09.06.2015 в 17:27
pabchek
Дата: Вторник, 09.06.2015, 18:35 |
Сообщение № 7
Группа: Проверенные
Ранг: Ветеран
Сообщений: 931
Репутация:
218
±
Замечаний:
0% ±
Excel 2007
А вот псевдогенератор, псевдослучайных чисел))). Он конечен, однако можно увеличить число вариаций заменив в формуле 1000 и 10000 на бОльшие числа. Формула массивная: Код
=ИНДЕКС($A$2:$A$10;ПОИСКПОЗ(НАИБОЛЬШИЙ(ТРАНСП(ОТБР(ОСТАТ(ПИ()*(1/СТРОКА($A$2:$A$10))*1000;1)*10000));СТРОКА()-1);ТРАНСП(ОТБР(ОСТАТ(ПИ()*(1/СТРОКА($A$2:$A$10))*1000;1)*10000));0))
А вот псевдогенератор, псевдослучайных чисел))). Он конечен, однако можно увеличить число вариаций заменив в формуле 1000 и 10000 на бОльшие числа. Формула массивная: Код
=ИНДЕКС($A$2:$A$10;ПОИСКПОЗ(НАИБОЛЬШИЙ(ТРАНСП(ОТБР(ОСТАТ(ПИ()*(1/СТРОКА($A$2:$A$10))*1000;1)*10000));СТРОКА()-1);ТРАНСП(ОТБР(ОСТАТ(ПИ()*(1/СТРОКА($A$2:$A$10))*1000;1)*10000));0))
pabchek
"Учиться, учиться и еще раз учиться!" WM: R399923528092
Ответить
Сообщение А вот псевдогенератор, псевдослучайных чисел))). Он конечен, однако можно увеличить число вариаций заменив в формуле 1000 и 10000 на бОльшие числа. Формула массивная: Код
=ИНДЕКС($A$2:$A$10;ПОИСКПОЗ(НАИБОЛЬШИЙ(ТРАНСП(ОТБР(ОСТАТ(ПИ()*(1/СТРОКА($A$2:$A$10))*1000;1)*10000));СТРОКА()-1);ТРАНСП(ОТБР(ОСТАТ(ПИ()*(1/СТРОКА($A$2:$A$10))*1000;1)*10000));0))
Автор - pabchek Дата добавления - 09.06.2015 в 18:35
Alex_Word
Дата: Вторник, 09.06.2015, 18:42 |
Сообщение № 8
Группа: Пользователи
Ранг: Новичок
Сообщений: 21
Репутация:
0
±
Замечаний:
0% ±
Excel 2013
Спасибо за ответы! Файл показать, к сожалению, не могу, но в нем находятся текстовые (sic!) данные. Сортировка встроенным инструментом не подходит, т.к. не обеспечивает нужную степень случайности. При помощи случайных чисел тоже не очень решение, т.к. сортировать нужно не весь лист, а выделенный диапазон . Например сначала ячейки А1-А10, потом А11-А40 и т.д. [moder]Цитата
Файл показать, к сожалению, не могу
Почему это? Для примера не обязательно оригинал Вашего файла выкладывать, сделайте 10-20 строк тестовых и покажите в файле.[/moder]
Спасибо за ответы! Файл показать, к сожалению, не могу, но в нем находятся текстовые (sic!) данные. Сортировка встроенным инструментом не подходит, т.к. не обеспечивает нужную степень случайности. При помощи случайных чисел тоже не очень решение, т.к. сортировать нужно не весь лист, а выделенный диапазон . Например сначала ячейки А1-А10, потом А11-А40 и т.д. [moder]Цитата
Файл показать, к сожалению, не могу
Почему это? Для примера не обязательно оригинал Вашего файла выкладывать, сделайте 10-20 строк тестовых и покажите в файле.[/moder] Alex_Word
Сообщение отредактировал Manyasha - Вторник, 09.06.2015, 18:54
Ответить
Сообщение Спасибо за ответы! Файл показать, к сожалению, не могу, но в нем находятся текстовые (sic!) данные. Сортировка встроенным инструментом не подходит, т.к. не обеспечивает нужную степень случайности. При помощи случайных чисел тоже не очень решение, т.к. сортировать нужно не весь лист, а выделенный диапазон . Например сначала ячейки А1-А10, потом А11-А40 и т.д. [moder]Цитата
Файл показать, к сожалению, не могу
Почему это? Для примера не обязательно оригинал Вашего файла выкладывать, сделайте 10-20 строк тестовых и покажите в файле.[/moder] Автор - Alex_Word Дата добавления - 09.06.2015 в 18:42
Alex_Word
Дата: Вторник, 09.06.2015, 19:25 |
Сообщение № 9
Группа: Пользователи
Ранг: Новичок
Сообщений: 21
Репутация:
0
±
Замечаний:
0% ±
Excel 2013
Вот, приложил образец.
Ответить
Сообщение Вот, приложил образец. Автор - Alex_Word Дата добавления - 09.06.2015 в 19:25
Alex_Word
Дата: Среда, 10.06.2015, 08:30 |
Сообщение № 10
Группа: Пользователи
Ранг: Новичок
Сообщений: 21
Репутация:
0
±
Замечаний:
0% ±
Excel 2013
Я так понимаю, что это нереализуемо?
Я так понимаю, что это нереализуемо? Alex_Word
Ответить
Сообщение Я так понимаю, что это нереализуемо? Автор - Alex_Word Дата добавления - 10.06.2015 в 08:30
DJ_Marker_MC
Дата: Среда, 10.06.2015, 09:27 |
Сообщение № 11
Группа: Друзья
Ранг: Ветеран
Сообщений: 991
Репутация:
213
±
Замечаний:
0% ±
Excel 2019
Может так подойдет? [vba]Код
Sub SORT() Application.ScreenUpdating = False Range("D2:D37").FormulaR1C1 = "=RANDBETWEEN(1,10000)" Range("B2:D19").Select ActiveWorkbook.Worksheets("Лист1").SORT.SortFields.Clear ActiveWorkbook.Worksheets("Лист1").SORT.SortFields.Add Key:=Range("D2:D19"), _ SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal With ActiveWorkbook.Worksheets("Лист1").SORT .SetRange Range("B2:D19") .Header = xlGuess .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With Range("B20:D37").Select ActiveWorkbook.Worksheets("Лист1").SORT.SortFields.Clear ActiveWorkbook.Worksheets("Лист1").SORT.SortFields.Add Key:=Range("D20:D37") _ , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal With ActiveWorkbook.Worksheets("Лист1").SORT .SetRange Range("B20:D37") .Header = xlGuess .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With Range("D2:D37").ClearContents Range("D1").Select Application.ScreenUpdating = True End Sub
[/vba] Примитивно, но работает.
Может так подойдет? [vba]Код
Sub SORT() Application.ScreenUpdating = False Range("D2:D37").FormulaR1C1 = "=RANDBETWEEN(1,10000)" Range("B2:D19").Select ActiveWorkbook.Worksheets("Лист1").SORT.SortFields.Clear ActiveWorkbook.Worksheets("Лист1").SORT.SortFields.Add Key:=Range("D2:D19"), _ SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal With ActiveWorkbook.Worksheets("Лист1").SORT .SetRange Range("B2:D19") .Header = xlGuess .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With Range("B20:D37").Select ActiveWorkbook.Worksheets("Лист1").SORT.SortFields.Clear ActiveWorkbook.Worksheets("Лист1").SORT.SortFields.Add Key:=Range("D20:D37") _ , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal With ActiveWorkbook.Worksheets("Лист1").SORT .SetRange Range("B20:D37") .Header = xlGuess .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With Range("D2:D37").ClearContents Range("D1").Select Application.ScreenUpdating = True End Sub
[/vba] Примитивно, но работает. DJ_Marker_MC
Ответить
Сообщение Может так подойдет? [vba]Код
Sub SORT() Application.ScreenUpdating = False Range("D2:D37").FormulaR1C1 = "=RANDBETWEEN(1,10000)" Range("B2:D19").Select ActiveWorkbook.Worksheets("Лист1").SORT.SortFields.Clear ActiveWorkbook.Worksheets("Лист1").SORT.SortFields.Add Key:=Range("D2:D19"), _ SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal With ActiveWorkbook.Worksheets("Лист1").SORT .SetRange Range("B2:D19") .Header = xlGuess .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With Range("B20:D37").Select ActiveWorkbook.Worksheets("Лист1").SORT.SortFields.Clear ActiveWorkbook.Worksheets("Лист1").SORT.SortFields.Add Key:=Range("D20:D37") _ , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal With ActiveWorkbook.Worksheets("Лист1").SORT .SetRange Range("B20:D37") .Header = xlGuess .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With Range("D2:D37").ClearContents Range("D1").Select Application.ScreenUpdating = True End Sub
[/vba] Примитивно, но работает. Автор - DJ_Marker_MC Дата добавления - 10.06.2015 в 09:27
pabchek
Дата: Среда, 10.06.2015, 09:43 |
Сообщение № 12
Группа: Проверенные
Ранг: Ветеран
Сообщений: 931
Репутация:
218
±
Замечаний:
0% ±
Excel 2007
Можно вот так. Формула массивная. Код
=ИНДЕКС($B$2:$B$55;ПОИСКПОЗ(НАИБОЛЬШИЙ(ТРАНСП(ОТБР(ОСТАТ(ПИ()*(1/СТРОКА(СМЕЩ($B$1;ПОИСКПОЗ(E2;$E$2:$E$55;0);;СЧЁТЕСЛИ($E$2:$E$55;E2))))*10000;1)*10000));СТРОКА()-ПОИСКПОЗ(E2;$E$2:$E$55;0));ТРАНСП(ОТБР(ОСТАТ(ПИ()*(1/СТРОКА(СМЕЩ($B$1;ПОИСКПОЗ(E2;$E$2:$E$55;0);;СЧЁТЕСЛИ($E$2:$E$55;E2))))*10000;1)*10000));0)+ПОИСКПОЗ(E2;$E$2:$E$55;0)-1)
P.S. А если бы Вы сразу приложили файл образец, не делалось бы лишней работы.
Можно вот так. Формула массивная. Код
=ИНДЕКС($B$2:$B$55;ПОИСКПОЗ(НАИБОЛЬШИЙ(ТРАНСП(ОТБР(ОСТАТ(ПИ()*(1/СТРОКА(СМЕЩ($B$1;ПОИСКПОЗ(E2;$E$2:$E$55;0);;СЧЁТЕСЛИ($E$2:$E$55;E2))))*10000;1)*10000));СТРОКА()-ПОИСКПОЗ(E2;$E$2:$E$55;0));ТРАНСП(ОТБР(ОСТАТ(ПИ()*(1/СТРОКА(СМЕЩ($B$1;ПОИСКПОЗ(E2;$E$2:$E$55;0);;СЧЁТЕСЛИ($E$2:$E$55;E2))))*10000;1)*10000));0)+ПОИСКПОЗ(E2;$E$2:$E$55;0)-1)
P.S. А если бы Вы сразу приложили файл образец, не делалось бы лишней работы. pabchek
"Учиться, учиться и еще раз учиться!" WM: R399923528092
Ответить
Сообщение Можно вот так. Формула массивная. Код
=ИНДЕКС($B$2:$B$55;ПОИСКПОЗ(НАИБОЛЬШИЙ(ТРАНСП(ОТБР(ОСТАТ(ПИ()*(1/СТРОКА(СМЕЩ($B$1;ПОИСКПОЗ(E2;$E$2:$E$55;0);;СЧЁТЕСЛИ($E$2:$E$55;E2))))*10000;1)*10000));СТРОКА()-ПОИСКПОЗ(E2;$E$2:$E$55;0));ТРАНСП(ОТБР(ОСТАТ(ПИ()*(1/СТРОКА(СМЕЩ($B$1;ПОИСКПОЗ(E2;$E$2:$E$55;0);;СЧЁТЕСЛИ($E$2:$E$55;E2))))*10000;1)*10000));0)+ПОИСКПОЗ(E2;$E$2:$E$55;0)-1)
P.S. А если бы Вы сразу приложили файл образец, не делалось бы лишней работы. Автор - pabchek Дата добавления - 10.06.2015 в 09:43
Samaretz
Дата: Среда, 10.06.2015, 10:09 |
Сообщение № 13
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 223
Репутация:
63
±
Замечаний:
0% ±
Excel 2010; 2013; 2016
С доп.столбцом.
Ответить
Сообщение С доп.столбцом. Автор - Samaretz Дата добавления - 10.06.2015 в 10:09
_Boroda_
Дата: Среда, 10.06.2015, 11:12 |
Сообщение № 14
Группа: Админы
Ранг: Местный житель
Сообщений: 16895
Репутация:
6613
±
Замечаний:
±
2003; 2007; 2010; 2013 RUS
Без допстолбцовКод
=ИНДЕКС(B$1:B$37;НАИБОЛЬШИЙ((ПРОСМОТР(СТРОКА(A$2:A$37);СТРОКА(A$2:A$37)/($A$2:$A$37<>"");$A$2:$A$37)=ПРОСМОТР(;-КОДСИМВ($E$2:$E2);$E$2:$E2))*СТРОКА(B$2:B$37)*ЕОШИБКА(ПОИСКПОЗ($B$2:$B$37;$F$1:$F1;));ОКРУГЛВВЕРХ(СЛЧИС()*(СУММ(--(ПРОСМОТР(СТРОКА(A$2:A$37);СТРОКА(A$2:A$37)/($A$2:$A$37<>"");$A$2:$A$37)=ПРОСМОТР(;-КОДСИМВ($E$2:$E2);$E$2:$E2)))-СУММ(--(ПРОСМОТР(СТРОКА(A$2:A2);СТРОКА(A$2:A2)/($E$2:$E2<>"");$E$2:$E2)=ПРОСМОТР(;-КОДСИМВ($E$2:$E2);$E$2:$E2)))+1);0)))
Можно уменьшить. И предполагаю, что намного. Если не забуду и будет свободное время - укорочу. Или, возможно, еще кто-то займется.
Без допстолбцовКод
=ИНДЕКС(B$1:B$37;НАИБОЛЬШИЙ((ПРОСМОТР(СТРОКА(A$2:A$37);СТРОКА(A$2:A$37)/($A$2:$A$37<>"");$A$2:$A$37)=ПРОСМОТР(;-КОДСИМВ($E$2:$E2);$E$2:$E2))*СТРОКА(B$2:B$37)*ЕОШИБКА(ПОИСКПОЗ($B$2:$B$37;$F$1:$F1;));ОКРУГЛВВЕРХ(СЛЧИС()*(СУММ(--(ПРОСМОТР(СТРОКА(A$2:A$37);СТРОКА(A$2:A$37)/($A$2:$A$37<>"");$A$2:$A$37)=ПРОСМОТР(;-КОДСИМВ($E$2:$E2);$E$2:$E2)))-СУММ(--(ПРОСМОТР(СТРОКА(A$2:A2);СТРОКА(A$2:A2)/($E$2:$E2<>"");$E$2:$E2)=ПРОСМОТР(;-КОДСИМВ($E$2:$E2);$E$2:$E2)))+1);0)))
Можно уменьшить. И предполагаю, что намного. Если не забуду и будет свободное время - укорочу. Или, возможно, еще кто-то займется. _Boroda_
Скажи мне, кудесник, любимец ба’гов... Платная помощь: Boroda_Excel@mail.ru Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
Ответить
Сообщение Без допстолбцовКод
=ИНДЕКС(B$1:B$37;НАИБОЛЬШИЙ((ПРОСМОТР(СТРОКА(A$2:A$37);СТРОКА(A$2:A$37)/($A$2:$A$37<>"");$A$2:$A$37)=ПРОСМОТР(;-КОДСИМВ($E$2:$E2);$E$2:$E2))*СТРОКА(B$2:B$37)*ЕОШИБКА(ПОИСКПОЗ($B$2:$B$37;$F$1:$F1;));ОКРУГЛВВЕРХ(СЛЧИС()*(СУММ(--(ПРОСМОТР(СТРОКА(A$2:A$37);СТРОКА(A$2:A$37)/($A$2:$A$37<>"");$A$2:$A$37)=ПРОСМОТР(;-КОДСИМВ($E$2:$E2);$E$2:$E2)))-СУММ(--(ПРОСМОТР(СТРОКА(A$2:A2);СТРОКА(A$2:A2)/($E$2:$E2<>"");$E$2:$E2)=ПРОСМОТР(;-КОДСИМВ($E$2:$E2);$E$2:$E2)))+1);0)))
Можно уменьшить. И предполагаю, что намного. Если не забуду и будет свободное время - укорочу. Или, возможно, еще кто-то займется. Автор - _Boroda_ Дата добавления - 10.06.2015 в 11:12
Alex_Word
Дата: Пятница, 12.06.2015, 11:01 |
Сообщение № 15
Группа: Пользователи
Ранг: Новичок
Сообщений: 21
Репутация:
0
±
Замечаний:
0% ±
Excel 2013
Здравствуйте! Спасибо за ответы. Но, если честно, я не знаю как пользоваться вышеприведенными способами. Это что? Макросы?
Здравствуйте! Спасибо за ответы. Но, если честно, я не знаю как пользоваться вышеприведенными способами. Это что? Макросы? Alex_Word
Ответить
Сообщение Здравствуйте! Спасибо за ответы. Но, если честно, я не знаю как пользоваться вышеприведенными способами. Это что? Макросы? Автор - Alex_Word Дата добавления - 12.06.2015 в 11:01