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

Вход

Регистрация

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

 

= Мир MS Excel/Случайное перемешивание ячеек в выбранном диапазоне. Как? - Мир MS Excel

  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_, DrMini  
Случайное перемешивание ячеек в выбранном диапазоне. Как?
Alex_Word Дата: Вторник, 09.06.2015, 11:14 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 21
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Здравствуйте!

Возникла необходимость в случайном порядке перемешивать выбранный диапазон ячеек. Пример того как должно получиться я прикладываю к теме. Скажите, это возможно как-нибудь автоматизировать?

Заранее спасибо.
К сообщению приложен файл: 6246283.png (3.5 Kb)
 
Ответить
СообщениеЗдравствуйте!

Возникла необходимость в случайном порядке перемешивать выбранный диапазон ячеек. Пример того как должно получиться я прикладываю к теме. Скажите, это возможно как-нибудь автоматизировать?

Заранее спасибо.

Автор - Alex_Word
Дата добавления - 09.06.2015 в 11:14
Pelena Дата: Вторник, 09.06.2015, 11:16 | Сообщение № 2
Группа: Админы
Ранг: Местный житель
Сообщений: 19517
Репутация: 4632 ±
Замечаний: ±

Excel 365 & Mac Excel
Здравствуйте.
Можно заполнить доп. столбец случайными числами и отсортировать по этому столбцу


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
СообщениеЗдравствуйте.
Можно заполнить доп. столбец случайными числами и отсортировать по этому столбцу

Автор - Pelena
Дата добавления - 09.06.2015 в 11:16
Alex_Word Дата: Вторник, 09.06.2015, 11:19 | Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 21
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Здравствуйте.
В том-то и дело, что там введены данные, которые изменять нельзя и которые не могут быть случайными. Поэтому нужно как-то перемешать, не изменяя при этом содержимое ячеек.
 
Ответить
СообщениеЗдравствуйте.
В том-то и дело, что там введены данные, которые изменять нельзя и которые не могут быть случайными. Поэтому нужно как-то перемешать, не изменяя при этом содержимое ячеек.

Автор - Alex_Word
Дата добавления - 09.06.2015 в 11:19
Pelena Дата: Вторник, 09.06.2015, 11:20 | Сообщение № 4
Группа: Админы
Ранг: Местный житель
Сообщений: 19517
Репутация: 4632 ±
Замечаний: ±

Excel 365 & Mac Excel
Где "там"?
Файл не хотите показать?


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
СообщениеГде "там"?
Файл не хотите показать?

Автор - Pelena
Дата добавления - 09.06.2015 в 11:20
pabchek Дата: Вторник, 09.06.2015, 17:08 | Сообщение № 5
Группа: Проверенные
Ранг: Ветеран
Сообщений: 931
Репутация: 218 ±
Замечаний: 0% ±

Excel 2007
Вот. Пока с допстолбцом.
К сообщению приложен файл: 6419204.xlsb (7.7 Kb)


"Учиться, учиться и еще раз учиться!"
WM: R399923528092
 
Ответить
СообщениеВот. Пока с допстолбцом.

Автор - pabchek
Дата добавления - 09.06.2015 в 17:08
Pelena Дата: Вторник, 09.06.2015, 17:27 | Сообщение № 6
Группа: Админы
Ранг: Местный житель
Сообщений: 19517
Репутация: 4632 ±
Замечаний: ±

Excel 365 & Mac Excel
Возможно, я неправильно понимаю, но я имела в виду сортировку не формулой, а встроенным инструментом Сортировка, тогда будут задействованы все столбцы, а не только А.


"Черт возьми, Холмс! Но как??!!"
Ю-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))
К сообщению приложен файл: 3970781.xlsb (7.7 Kb)


"Учиться, учиться и еще раз учиться!"
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]


Сообщение отредактировал 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
Вот, приложил образец.
К сообщению приложен файл: 9234604.xlsx (10.3 Kb)
 
Ответить
СообщениеВот, приложил образец.

Автор - Alex_Word
Дата добавления - 09.06.2015 в 19:25
Alex_Word Дата: Среда, 10.06.2015, 08:30 | Сообщение № 10
Группа: Пользователи
Ранг: Новичок
Сообщений: 21
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Я так понимаю, что это нереализуемо?
 
Ответить
СообщениеЯ так понимаю, что это нереализуемо?

Автор - 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]

Примитивно, но работает.
К сообщению приложен файл: MARKER.xlsm (18.2 Kb)
 
Ответить
СообщениеМожет так подойдет?

[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. А если бы Вы сразу приложили файл образец, не делалось бы лишней работы.
К сообщению приложен файл: 0993799.xlsx (14.2 Kb)


"Учиться, учиться и еще раз учиться!"
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
С доп.столбцом.
К сообщению приложен файл: 1132125.xlsx (13.9 Kb)
 
Ответить
СообщениеС доп.столбцом.

Автор - 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)))

Можно уменьшить. И предполагаю, что намного. Если не забуду и будет свободное время - укорочу. Или, возможно, еще кто-то займется.
К сообщению приложен файл: 9234604_1.xlsx (13.3 Kb)


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
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
Дата добавления - 12.06.2015 в 11:01
  • Страница 1 из 1
  • 1
Поиск:

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